远程仓库
结束本地仓库的各种管理指令,我们要开始远程仓库的创建了。世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,下面步骤中的“your_email@example.com”是可以我们的github注册邮箱账号不一样的。 第一步,我们要创建一个ssh密钥:
1:open terminal;
2:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
3:
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
4:
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
github官方教程
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
点“Add Key”,你就应该看到已经添加的Key:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。在GitHub上免费托管的Git仓库,任何人都可以看到,但只有你自己才能改。
添加远程库
现在已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步。GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。
登陆GitHub,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
现在在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
我们在learngit仓库下运行命令,这是一条关联指令:
$ git remote add origin git@github.com:mynamezy/learngit.git
:后面添加的是我们github的用户名。添加后,远程库的名字就是origin,这是Git默认的叫法,下一步,把本地库地的内容全部推送到远程库中:
$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
如果你现在有新的提交:
$ git push origin master
把本地master分支的最新修改推送至GitHub,那么,我们就拥有了真正的分布式版本库。
从远程库克隆
假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
登陆GitHub,创建一个新的仓库,名字叫gitskills:
勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:
远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
$ git clone git@github.com:zhangyu/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd gitskills
$ ls
README.md