第四章 远程仓库

1. 远程仓库原理

①.如何分布?

只有一台主机有一个原始版本库,此后,别的机器可以“克隆”这个原始库,而且每台机器的版本库其实都是一样的,并没有主次之分。在这里,原始版本库可以放在GitHub上托管,作为主库。

②.由于本地Git仓库和GitHub'仓库之间的传输是通过SSH加密的,所以,需要一点设置:

1)创建SSH Key:打开git bash

$ ssh-keygen -t rsa -C "youremail@example.com"

接着一路回车。

2)[endif]正常的话用户主目录会出现.ssh文件夹,里面有id_rsa和id_rsa.pub,前者是私钥不可泄漏,后者是公钥,可以给别人。

]3)[endif]登陆GitHub,打开”ACCount settings”, ”SSH Keys”.添加ssh,然后把id_rsa.pub里的内容复制在框格里(.pub用notepad++打开)。点击添加,如果给你发邮件,表示添加成功。

③.为什么GitHub需要SSH Keys呢?这位HUB需要识别出你推送的提交确实是你推送的,而不是别人冒充的。而GitHub支持SSH协议,所以,只要他知道了你的公钥,就可以确认只有你自己才可以推送。当然,GitHub允许有多个Key,只要把每台电脑的ssh key都添加在GitHub上,就可以多台主机向代码库中提交了。

④.友情提示:

GitHub上托管的Git仓库,任何人都可以看到,但只有你自己可以修改。所以,不要把敏感内容放进去。

⑤.如果不想被他人看见怎么办?

交钱,GitHub把公开仓库变成私有的。另外,就是自己动手,搭建一个Git服务器,只有公司内部可以看见。



2. 添加远程库

①.如何在GitHub上创建公用Git仓库,并实现多个仓库进行远程同步?

(好处:Hub上的仓库可以作为备份,又可以让其他人通过该仓库来协作开发)

登陆GitHub,右上角找到+ -> new repository,创建一个新的仓库

在GitHub上创建仓库


创建成功

这时,就创建了一个空的仓库。这时,在本地的learngit仓库下运行命令

$ git remote add origin git@github.com:michaelliao/learngit.git

下一步,就可以把本地库的所有内容推送到远程库中了

$ git push -u origin master

Counting objects: 20, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (15/15), done.

Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.

Total 20 (delta 5), reused 0 (delta 0)

remote: Resolving deltas: 100% (5/5), done.

To github.com:michaelliao/learngit.git

 * [new branch]      master -> master

Branch 'master' set up to track remote branch 'master' from 'origin'.

1)[endif]把本地内容推送至远程仓库,用git push命令。实际是把当前分支master推送到远程。

2)[endif]因为远程库为空,所以第一次推送master分支时,加上了-u参数。Git会把本地的master分支内容推送给新的master分支,还会将本地master和远程master分支关联起来,以后推送或拉取时就可以简化命令了。

]3)[endif]现在,本地仓库和远程仓库就分布式连接起来了。只要本地有了新数据,就可以通过命令更新GitHub上的数据了。

$ git push origin master

4)[endif]我本人在操作时,有两个问题:

11. 当时我的本地版本库由于数据未删除完全,主要是后面的commit没有提交成功,所以我的status一直是动态的,导致无法推送数据。

22. 在GitHub上创建版本库时,手贱点了创建ReadMe文件,然而本地并没有这个文件,所以一直无法提交。

解决方案:

将远程仓库和本地仓库内容合并(pull=fetch+merge)

git pull --rebase origin master

执行上面代码,就发现本地仓库多一个readme.md文件,这时就可以正常推送了。 

git push -u origin master即可完成代码上传到github

5)总结:

关联远程库,使用命令git remote add origingit@server-name:path/repo-name.git

推送本地master内容,使用命令 git push -u origin master

以后提交修改信息,git push origin master

1. 从远程库克隆

重新创建一个版本库,然后克隆在本地仓库

$ git clone git@github.com:KisonGump/gitskills.git

Cloning into 'gitskills'...

remote: Counting objects: 3, done

.remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3

Receiving objects: 100% (3/3), done.

克隆的新仓库会出现在本地仓库的一个新的文件夹中。

如果多个人协作开发,那么每个人各自远程克隆一份即可。

总结:

想要克隆一个仓库,首先必须知道仓库的地址,然后用git clone命令克隆

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 远程仓库 到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题...
    归云丶阅读 1,980评论 0 5
  • 本系列教程来自廖雪峰的官方网站,现在搬运过来,目的帮助自己和小白学习收藏!附赠:常用git命令清单 到目前为止,我...
    Blizzard_liu阅读 414评论 0 3
  • 如何生成SSH key SSH key提供了一种与GitHub通信的方式,通过这种方式,能够在不输入密码的情况下,...
    dunlunjinfen阅读 382评论 0 1
  • 远程仓库。 在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密...
    在你左右2018阅读 356评论 0 0
  • 在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要...
    八宝君阅读 336评论 0 0