3.Git的使用2——远程仓库Github¶
GitHub——全球最大同性交友网站(狗头),我们这里主要使用它的代码托管功能。需要说明的是,GitHub并不是唯一的选择,你甚至可以自己搭建一个远程git仓库,如在docker中部署gitlab就是一个较为简单的选择。
没有远程仓库的git是没有灵魂的。如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。为了保证你现在所学的Git物超所值,将来绝对不会后悔(为了打击已经不幸学了SVN的童鞋),现在介绍git的另一大功能——远程仓库。
简单体验¶
首先体验一下最简单的从github拉取到本地——从远程库克隆:打开git bash后键入以下命令:
1 | git clone https://github.com/Ray005/eleasysite.git
|
这是使用http的方式拉取,不需要密钥,下面使用的推送则基于SSH协议,稍微复杂一些:
步骤¶
在继续阅读后续内容前,请自行注册GitHub账号
第一步:创建SSH Key¶
在文件夹中右键,选择“Git Bash Here”
按钮,输入以下命令以SSH密钥,注意要替换成你的邮件地址(虽然不换也问题不大):
1 | ssh-keygen -t rsa -C "youremail@example.com"
|
然后一路回车,也就是使用默认参数的意思。在C:\Users\用户名\.ssh
文件夹里找到两个文件:id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对
- id_rsa是私钥,不能泄露出去
- id_rsa.pub是公钥,可以放心地告诉任何人。
第二步:在GitHub上添加公钥¶
登陆GitHub,右上角箭头中依次打开“Account settings”
,“SSH Keys”
页面:
然后,点“Add SSH Key”
,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件内容,这需要在上一步所说的路径中,找到公钥文件,使用文本编辑器打开(如VScode,甚至windows自带的记事本也可以):
Question
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
Note
友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
第三步:创建Github远程库并从本地推送¶
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,
首先需要知道几个词: * Repository:储存库 * origin:远程库的默认名称,让人一看就知道是远程库 * master:主分支,与之对应的是branch,分支
在github上创建好储存库(Repository)后,需要关联一下本地库与远程库,在本地的bash中输入:
1 | git remote add origin git@github.com:ray005/example.git
|
这里要替换两处: * ray005是我的github ID,换成你注册是的用户名即可 * example.git这是储存库的名字,换成你刚才创建的即可
接下来可以推送了,-u
参数在之后不用了,因为它是关联本地与远程库的参数:
1 | git push -u origin master
|
至此,恭喜你,你已经拥有一个远程仓库并可以与GitHub上成千上万的程序猿/媛以代码方式交流了!
首次推送会收到警告,回答yes即可,这样等于信任了这个“github”是你真正要推送的目标,如果害怕有人伪装成github,可以验证一下那一串字符。
小结¶
ssh-keygen -t rsa -C "youremail@example.com"
生成本机密钥(公钥要上传到github)
git remote add origin git@github.com:ray005/example.git
要关联一个远程库,使用该命令
git push -u origin master
推送命令:-u参数是第一次推送时才用。表示推送到origin远程库的master分支,之后就默认使用这个分支了
REFERENCE 参考文献¶
APPENDIX 附录¶
All the coding in this document is Available on the Github.