远程仓库
# 添加远程库
先有本地库,后有远程库: GitHub 的提示,在本地的 learngit 仓库下运行命令:
git remote add origin git@github.com:Hope-Studio/learngit.git
添加后,远程库的名字就是 origin,这是 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:Hope-Studio/learngit.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
2
3
4
5
6
7
8
9
10
由于远程库是空的,我们第一次推送 master 分支时,加上了 -u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。 推送成功后,可以立刻在 GitHub 页面中看到远程库的内容已经和本地一模一样: 从现在起,只要本地作了提交,就可以通过命令:
git push origin master
# SSH 警告
当您第一次使用 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)?
2
3
这是因为 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 clone 克隆一个本地库:
git clone git@github.com:Hope-Studio/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.
2
3
4
5
如果您使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。
# 从远程仓库抓取
从远程仓库中获得数据,可以执行:
git fetch <remote>
这个命令会访问远程仓库,从中拉取所有您还没有的数据。执行完成后,您将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。必须注意 git fetch 命令只会将数据下载到您的本地仓库——它并不会自动合并或修改您当前的工作。当准备好时您必须手动将其合并入您的工作。
# git fetch 和 git pull 区别
git pull = git fetch + git merge
网上很多文章说,在实际运用中,git fetch 比 git pull 更安全一些,因为我们可以先比较本地与远程的区别后,选择性的合并
在公司项目里,直接用git pull就好了,即使远程库删掉了很多提交,也是团队需要,直接git pull就好。
# 远程仓库重命名与移除
您可以运行 git remote rename 来修改一个远程仓库的简写名。例如,想要将 pb 重命名为 paul,可以用 git remote rename 这样做:
git remote rename pb paul
git remote
origin
paul
2
3
4
值得注意的是这同样也会修改您所有远程跟踪的分支名字。那些过去引用 pb/master 的现在会引用 paul/master。
如果因为一些原因想要移除一个远程仓库——您已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了——可以使用 git remote remove 或 git remote rm:
git remote remove paul
git remote
origin
2
3
一旦您使用这种方式删除了一个远程仓库,那么所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除。