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_rsaid_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 参考文献

廖雪峰的官方网站之git教程

APPENDIX 附录

All the coding in this document is Available on the Github.

TTECH SUPPORT 技术支持