搭通自己的电脑与GitHub的传输通道
一、远程仓库怎么玩
1. 自己搭建一个运行Git的服务器
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这样子就没有主次之分!因此,很多时候,我们会找一台电脑来充当服务器的角色,每天24小时开机,便于其他人从这个“服务器”仓库克隆到自己的电脑上,并且各自把各自的提交推送到服务器仓库,也从服务器仓库中拉取别人的提交。
2. 注册GitHub免费获得Git远程仓库
"GitHub是一群有趣的人在做的有趣的事,如果只把GitHub当做一个Git服务器,实在暴殄天物。"
GitHub是一个面向开源及私有软件项目的托管平台,因为支持Git作为唯一的版本库格式进行托管,故名为GitHub。
Git的吉祥物是由小章鱼和小猫组合而成,名字叫做Octocat(章鱼猫)。
二、搭通自己的电脑与GitHub的传输通道
1.步骤
第1步:创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Window下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa "youremail@example.com"
然后一路回车,使用默认值即可,密码可不用设置。
成功:可在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是 SSH Key 的密钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:在GitHub放入你的SSH Key
登陆GitHub,打开Account settings -> SSH Keys页面:点Add SSH Key,填上任意Title,在Key文本框里粘贴 id_rsa.pub 文件的内容。保存即可。
2.为什么GitHub需要SSH Key?
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
提示 :在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能修改)。所以,建议不要把敏感信息放进去。
3.不想让别人看到你的Git库?
如果你不想让别人看到Git库,有两个办法,一个是付费,让GitHub把公开的仓库变成私有的,这样别人看不见(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见(公司内部开发利器)。
三、添加远程仓库
1.情景
本地有一个Git仓库 -> 在GitHub创建一个仓库 -> 让这两个仓库进行远程同步
(这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。)
2.步骤
第1步 创建新库
确定好本地上要远程添加的仓库myrepo,登陆GitHub,然后在右上角找到Create a new repo按钮,创建一个新的仓库:
第2步 设置新库
在创建新仓库页面在 Repository name 填入myrepo,其他保持默认设置,点击下面的绿色按钮Create repository,就成功创建了一个新的Git仓库:
在上图中,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
第3步 本地关联
于是,根据GitHub的提示,在本地的myrepo仓库下运行命令:
$ git remote add origin git@github.com:dopppler/myrepo.git
提示 :注意替换成你的名字,否则关联的我的远程库,关联没有问题,但是你以后是推送不上去的,因为你的SSH Key公钥不在我的账号列表中。
第4步 本地推送
把本地库的所有内容推送到远程库上:
把本地库的内容推送到远程,用git push命令。
实际上是把当前分支
master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,就可以在GitHub页面中看到远程库的内容已经和本地一样了:
从现在起,只要本地作了提交,就可以通过命令: $ git push origin master
把本地
master分支的最新修改推送至GitHub,至此,你就拥有了真正的分布式版本库!
提示:第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要确认GitHub的Key指纹是否真的来自GitHub的服务器,输入yes回车即可。随后,Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表中,后面的操作不会再出现警告了。
3.总结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容。
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。
分布式版本系统的最大好处之一 :在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的。当有网络的时候,再把本地提交推送一下就完成了同步,太方便了。
四、从远程库克隆
1.情景
当我们从零开发时,一般会这样做:先创建远程库 -> 从远程库克隆到本地
2.步骤
第1步 创建新库
在GitHub创建一个新的仓库。
注:勾选下面的选项
Initialze this repository with a README,GitHub就会自动为我们创建一个README.md文件。
第2步 本地克隆
用命令git clone克隆一个本地库。
$ git clone git@github.com:dopppler/hellogithub.git
提示:注意把Git的地址换成自己的。
如果是多人协作开发,那么每个人各自从远程克隆一份就可以了。
也许你还注意到,GitHub给出的地址不止一个,还可以用https://github.com/dopppler/hellogithub.git这样的地址。实际上,Git支持多种协议,默认的git://使用 ssh,但也可以使用 https 等其它协议。
使用 https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放 http 端口的公司内部就无法使用ssh协议而只能用 https。
3.总结
要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone 命令去克隆。
Git支持多种协议,包括 https ,但通过 ssh 支持的原生git协议速度最快。
搭通自己的电脑与GitHub的传输通道的更多相关文章
- GitHub学习一-本地电脑与GitHub绑定
1.创建ssh key $ ssh-keygen -t rsa -C "your_email@youremail.com"安装完git,右键git bash here,创建ssh ...
- 同一台电脑同时使用gitHub和gitLab
工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号.怎样才能在使用gitlab与github时,切换成对应的账号,并且免密?这时我们需要使用ss ...
- Git在新电脑拉github 上的项目
非小白教程.多少有点了解的才能看懂. 1,安装git 忽略,任意i找一个图文教程即可 2,在命令行模式 输入 cd ~/.ssh/ 进入c:administrator的文件下的.ssh文件夹: 或者 ...
- Git 进阶 —— 远程仓库
一.远程仓库怎么玩 1. 自己搭建一个运行Git的服务器 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这 ...
- Git-进阶-远程仓库的使用
一.远程仓库怎么玩 1. 自己搭建一个运行Git的服务器 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这 ...
- 同一个电脑配置两个github账号
mac中.ssh文件夹在根目录下,所以表示成 ~/.ssh/. 一.同一个电脑配置两个github账号1.分别为两个GitHub账号生成SSH密钥 $ cd ~/.ssh $ ssh-keygen - ...
- github在不同电脑上协同开发
当我换了电脑后,开发自己的github项目遇到了一些问题. 首先,git clone 'repository url'拉取下来项目,开始开发项目发.修改了一些文件后,当要git commit, git ...
- Github开源Java项目(Disconf)上传到Maven Central Repository方法详细介绍
最近我做了一个开源项目 Disconf:Distributed Configuration Management Platform(分布式配置管理平台) ,简单来说,就是为所有业务平台系统管理配置文件 ...
- 用github搭建网站
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
随机推荐
- POJ 1286 【POLYA】
题意: 给你三种颜色的珠子,每次给你N,问在旋转,翻转之后视作相同的情况下,能组成多少种不同的项链. 思路: 让我们借这道题拯救一下我对POLYA定理的理解... sigma(m^(gcd(i,n)) ...
- ubuntu中VNC的安装配置笔记
使用服务器时,利用远程桌面是非常方便的,否则需要跑到服务器机房操作非常的费事,或者需要远程操作机器是也可以使用,一般的操作系统都会带有远程桌面功能,但是不如第三方的的软件好用,对于linux系统常用的 ...
- 在iis中注册.net framework
首先定位到文件夹:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 执行命令:aspnet_regiis.exe -i
- 使用pscp实现Windows 和 Linux服务器间远程拷贝文件
转自:http://www.linuxidc.com/Linux/2012-05/60966.htm 在工作中,每次部署应用时都需要从本机Windows服务器拷贝文件到Linux上,有时还将Linux ...
- unity区分点击在3D物体还是2D UI上
当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2 ...
- UGUI不规则按钮实现思路
根据图片的透明度来判断是否点击到了适当区域(如果a值是0,说明完全透明,则判断为没点击,否则判断为触发点击) using UnityEngine; using System.Collections; ...
- c++引用小问题!
两段程序 string version(const string &s1,const string &s2) { string temp; temp =s2+s1+s2; return ...
- js正则表达式中匹配反引号
直接用反引号就可以了~ /`[\W\w\*]+`\.`[\W\w\*]+`/
- SQL 如果存在就更新,如果不存在就添加,使用 Merge 函数(SQL2008版本及以上)
USE [NationalUnion] GO /****** Object: StoredProcedure [dbo].[proc_DataSummary] Script Date: 07/03/2 ...
- 两个正在运行的activity之间的通信
在android应用程序开发的时候,从一个activity启动另一个activity并传递一些数据到新的activity非常的简单,但是当您需要让后台运行的activity回到前台并传递一些数据可能就 ...