git与svn的区别在于它是一个分布式的版本控制系统,同一个git仓库可以分布到不同的机器上。
借助一个提供git仓库托管服务的网站,即可以实现代码的分布式版本控制。当下最大的git托管服务是著名的GitHub,本文也是对于GitHub远程库的使用要点说明。
创建并绑定ssh key
首先,需要创建一个ssh 密钥公钥对(rsa加密算法),这对密钥用于本机向远程库提交代码时进行身份验证。我们使用如下代码创建密钥公钥对:
$ ssh-keygen -t rsa -C "youremail@example.com"
这个ssh-keygen命令有一系列参数,如-t是指选择何种加密算法,-C是在公钥最后增加一个评论内容,使得其更容易区分。其他参数可以通过ssh-keygen --help查看。创建好的密钥公钥对位于家目录(win和Linux的家目录位置不同,可百度)下的.ssh文件夹,分别为id_rsa和id_rsa.pub。
之后我们需要将创建好的公钥(id_rsa.pub)绑定到GitHub上,具体位置在GitHub网站的account setting中,绑定后会生成一个指纹,用于后续第一次向服务器推送代码时验证GitHub是否是真的。之后,我们由本机向远程库提交代码时,就会带着本地的密钥与GitHub中的ssh公钥列表进行比对,如果密钥找到了对应的公钥,即可以从本地向远程库提交代码,从而进行后续的分布式版本管理。
添加与克隆远程库
将本地的库和远程的库关联有两种使用情景:
一是已经有了一个本地库,我们创建一个远程库并与之关联,然后再将本地库内容推送至远程库,这种情况为添加远程库。具体操作为在本地git仓库目录下运行关联远程库命令:
$ git remote add origin git@github.com:想要提交的GitHub账户名/远程仓库名.git
此命令是将指定的远程库命名为origin(默认叫法),并添加到remote中,后面可以通过git remote查看有哪些远程库。
下一步是将本地库的内容推送到远程库上,还是在本地库目录下,运行命令:
$ git push origin master
第二种情景是,已经有了一个远程库,我们将其克隆至本地。在想要创建本地克隆库的目录下运行命令:
$ git clone git@github.com:想要克隆的GitHub帐户名/想要克隆的仓库名.git
该命令会将远程库的内容复制到本地目录一份。
第一次推送或克隆内容时,会提示ssh警告,可以将返回的指纹与一开始绑定公钥时的指纹进行对比来确认是否真实,之后便会将服务器地址(github.com)加入到信任列表,再次推送不会有警告。
在推送或克隆时,GitHub的支持不同的协议,如默认的git@github.com使用ssh,这种方式速度最快。我们也可以使用https://或http://,具体需要视你的git服务器支持情况。