您的位置:首页 > 其它

Git(4)/远程仓库

2017-02-17 14:53 134 查看
上一节我们详细讲了git本地仓库,这一节我们来讲一讲远程仓库。

本地仓库中的很多功能,在集中式版本控制系统中往往也存在,没有什么新鲜的东西。那是什么让git在众多版本控制系统中脱颖而出呢?其中的一个答案就是:远程仓库。

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库都是一样的,没有主次之分,没想到“communism的因特纳雄耐尔”先在git中实现了:-D。

这个时候你会想,如果没有中央服务器,要是大家电脑都关机了,找谁推送和克隆啊?所以,实际情况往往是这样:找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

那你可能会接着问,难道要自己搭建一个服务器吗?那岂不是很麻烦?我只是想快速的将本地的helloworld代码保存一下啊,至于这么大动干戈吗?

这个时候,你就需要一个你可能听说过的大佬---github来解决你的问题了。

现在只需要注册一个账号,就能免费使用跟最先进的版本控制系统git配套使用的远程仓库github了。

那我先来clone一个远程仓库到本地玩一玩吧。



怎么出错了?

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的。在正式使用github之前,我们先要生成一个秘钥。有了这个秘钥,github才能确定,你就是你,才会给你权限去clone和push。上图中的错误就是没有权限,被拒绝操作。当然Git支持多种协议不只是SSH,包括https,但通过ssh支持的原生git协议速度最快。

秘钥生成具体步骤如下:

创建SSH Key

ssh-keygen -t rsa -C “email@hostname.com”

然后一直回车,使用默认值。最后会生成两个文件id_rsa和id_rsa.pub,在目录.ssh下。这两个文件就是SSH Key的秘钥对,id_rsa是私钥,一定不要泄露!!!,id_rsa.pub是公钥,是交给别人,让别人来检验你身份的工具。有关公钥私钥的有关概念可以看看wiki上Cryptography的有关内容。

添加SSH Key

登录github,点击图像旁的下拉菜单,打开Settings下的SSH Keys页面

然后new ssh key。这个时候要填写title和key。title是便于你分类查找用的,可以随便填写。要把id_rsa.pub中的内容复制到key下面去。最后点击add ssh key就行了。

最后的效果如图所示:



补充

git支持添加多个ssh key。这样我们就可以在多个地方,比如:办公室,家里,图书馆等地提交我们的代码了。

git的免费仓库是public的,如果你想要自己的私人空间,那就要给github交“保护费”。或者你也自己搭建一个服务器。这也印证了那句话---天下没有免费的午餐,如果有,也是很难吃的那种。

搭建好了远程仓库,接下来我们要做的就是添加远程仓库和从远程仓库克隆两个步骤了。

添加远程仓库

考虑一下情景:你已经在本地创建了一个git仓库,现在你想在服务器端也创建一个git仓库,让两个仓库关联起来。这样,你就可以将本地的代码推送到远程服务器,并且团队中的其他成员也可以在远程服务器上共享你的代码,协助你开发。

那么我们应该怎么做呢?

以我们之前创建的目录learngit为例,谈谈怎么添加远程仓库。

进入并登录github,点击NEW repository

输入Repository name为learngit,创建一个空的仓库。(**注意:不要勾选**Initialize this repository with a README )

然后在目录learngit下执行下面命令

git remote add origin git@github.com:AnranZhou/learngit.git
git push -u origin master


远程库的名字就是origin,这是Git默认的叫法

git push命令,实际上是把当前分支master推送到远程

第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令为
git push origin master
了。以后就不用输入-u参数了。

这个时候就OK了。我们可以在github网页上看到我们刚刚push上去的内容。

从远程仓库克隆

进入并登录github,点击NEW repository

输入Repository name(这里我输入DeepLearning)。勾选Initialize this repository with a README。让远程仓库有一个文件供我们clone。然后修改README.md增加一行字符,let us test the function of clone in git!!!



在本地新建一个目录mkdir,然后初始化本地git仓库git init。

然后在新建的目录下执行一下命令:

git@github.com:AnranZhou/DeepLearning.git
#格式为git clone git@github.com:<你的用户名>/<新建的Repository name>.git


perfect!我们可以看到本地新建的目录下出现了我们刚刚在远程仓库中的目录及文件。

示例如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: