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,创建一个新的仓库
这时,就创建了一个空的仓库。这时,在本地的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命令克隆