Git远程仓库的概念(3)
多人协同作战的时候,通常找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
github网站和git的关系
github网站底层使用git技术,为每个组织和个人提供Git仓库托管服务,省去搭建git服务器的步骤,方便全世界的开发者去共同维护一项开源项目或者私人项目。
生成SSH秘钥
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一点设置进行鉴权来保证传输的安全性。
第1步:创建SSH Key。在用户主目录下(不是工程目录),看看有没有.ssh目录,如果有,再看看这个目录下有没有
id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到
.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:添加SSH KEY。登陆GitHub,打开“Account settings->SSH and GPG Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴
id_rsa.pub
文件的内容。
创建git仓库--从本地仓库导入远程仓库
点击new repository填入repository name,其他保持默认,点击create repository,就成功创建了一个新的git仓库。然后Github会提示我们可以把这仓库作为新的仓库,或者与本地仓库做关联,然后把本地仓库内容推送到github仓库
##创建新的仓库的命令
echo "# learn_git" >> README.md //创建文件README.md
git init //初始化仓
git add README.md //添加文件到仓
git commit -m "first commit" //提交修改到仓
git remote add origin https://github.com/chengfng/learn_git.git //添加远程仓库地址,命令形式:git remote add <shortname> <url>
git push -u origin master //用于首次关联本地master分支与github仓库的master分支。之后推送和拉取可以简化操作,如git push origin master
同步远程仓库到本地
git clone git@github.com:michaelliao/gitskills.git //从远程仓库克隆到本地。
Git支持多种协议,包括
https
,但通过ssh
支持的原生git
协议速度最快。使用https最大的麻烦是每次推送都需要输入口令。
命令小结
git remote add <shortname> <url> //添加远程仓库地址并指定名字
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master //简化的推送命令
git clone <url> [shortname] //克隆远程仓到本地,并指定仓库名字
为什么需要SSH KEY?
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都关联添加到GitHub,就可以在每台电脑上往GitHub推送了。
git fetch 和git pull的区别
git pull = git fetch + git merge。
git fetch 只是更新了本地库的commi ID。
git pull 是把本地库更新,然后再merge,HEAD的值又发生了变化。
文章参考廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000