git教程03——远程仓库

git教程01——windows系统下教科书式安装git
git教程02——详细的git基本操作命令
git教程04——2种方法将本地代码提交到github上
git教程05——克隆github上的代码到本地

这个有必要单独拿出来说说,毕竟工作项目开发都是远程仓库的,前面几个教程都是为这篇文章服务的。

因此你先需要注册github账号,因为git仓库和github之间的传输是通过SSH加密的,需要以下设置:

①创建SSH Key:

在用户主目录下(我这里是:C:\Users\Administrator):


git教程03——远程仓库_第1张图片
截图.png

by update 2018/06/17

mac进入ssh文件夹下,可以用快捷键shift+cmd+g,进入ssh文件,形如:

/用户/自己的用户名/.ssh

如下所示:

git教程03——远程仓库_第2张图片
image.png

接下来操作跟windows操作一致,如下。
然后打开ssh,看看这个目录下有没有 id_rsaid_rsa.pub这两个文件:
git教程03——远程仓库_第3张图片
截图.png

如果有的话,直接跳过此如下命令,如果没有的话(我这里第一次配置ssh,所以没有),打开命令行,输入如下命令:

$ ssh-keygen -t rsa -C "你的邮箱"

然后一路回车,就会出现如下图:


git教程03——远程仓库_第4张图片
截图.png

然后我们再去看用户主目录:

git教程03——远程仓库_第5张图片
截图.png

此时多了个 id_rsaid_rsa.pub这两个文件

id_rsa:私钥 //不能泄露出去
iid_rsa.pubi:公钥

②登录github

打开settings,找到SSH Keys一项,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。


git教程03——远程仓库_第6张图片
截图.png
截图.png
git教程03——远程仓库_第7张图片
截图.png

点“Add SSH Key”,你就应该看到已经添加的Key:


git教程03——远程仓库_第8张图片
截图.png

为了验证是否成功,输入以下命令:

$ git -T [email protected]
截图.png

说明我们windows电脑已成功连上 Github。

这里有一个问题:为什么GitHub需要SSH Key呢?(这点理解很重要)
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

友情提示:在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

③添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:


git教程03——远程仓库_第9张图片
截图.png

在Repository name填入testgit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
git教程03——远程仓库_第10张图片
截图.png

目前,在h上的这个testgit仓库还是空的,github告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到h仓库。

现在,我们根据h的提示,在本地的testgit仓库下运行命令:

$ git remote add origin 你的ssh地址 //我的是[email protected]:Jsonjia/testgit.git

如下:

git教程03——远程仓库_第11张图片
截图.png

把本地库的内容推送到远程,用 git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了 -u参数,git不仅会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
git教程03——远程仓库_第12张图片
截图.png

从现在起,只要本地test.txt文件作了修改,就可以通过命令:

$ git add test.txt //回车
$ git commit -m "加了内容"
$ git push origin master

这样就把本地master分支修改的内容提交到github上了,现在你就拥有了真正的分布式版本库!

这里有个小插曲,当我第一次使用git的clone或者push命令连接github的时候,得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为git使用SSH连接,而SSH连接在第一次验证github服务器的Key时,需要你确认github的key的指纹信息是否真的来自github的服务器,输入yes回车即可。

git会输出一个警告,告诉你已经把github的key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

小结

要关联一个远程库,使用命令

git remote add origin ssh的地址
或者
git remote add origin https的地址

关联后,如果第一次提交,使用命令

git push -u origin master

推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令

git push origin master

把最新代码提交上去。

你可能感兴趣的:(git教程03——远程仓库)