远程分支

Posted velscode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程分支相关的知识,希望对你有一定的参考价值。

远程分支是指向远程仓库分支的指针,这些指针存在于本地且无法移动。当你与服务器进行任何网络通信时,他们会自动更新。远程分支有点像书签,指示这上一次链接服务器时远程仓库中每个分支的位置。

远程分支的表示形式是(remote)/(branch).。例如,如果你要查看上次与服务器通信时远程origin仓库中master分支的内容,就需要查看origin/master分支。

举例,我的github上有一个仓库gitstudy。仅有一个master分支,和两次提交
技术图片
我们将这个仓库克隆到本地

$ git clone https://github.com/velscode/gitstudy

我们查看一下现在的分支情况

D:\\git\\gitstudy (master -> origin)
$ git log --oneline --decorate --graph --all
* df6797b (HEAD -> master, origin/master, origin/HEAD) 远程提交2
* bc91f76 远程提交1

技术图片

这里,有两个master,一个是远程服务器上的origin/master一个是自己本地的master
我们改动文件并进行一次commit

$ git commit -a -m "本地提交1"
[master d437fa1] 本地提交1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 c.txt

查看分支

$ git log --oneline --decorate --graph --all
* d437fa1 (HEAD -> master) 本地提交1
* df6797b (origin/master, origin/HEAD) 远程提交2
* bc91f76 远程提交1

技术图片

可以看到,只有本地的master指针移动了,而由于没有push,所以服务器端的master指针仍然保持在原位置


接下来考虑这样一种情况,如果Tom和你同时克隆了这个仓库,并且改动文件,又在你之前提交且push到了服务器

$ git commit -a -m "Tom的提交"
[master 19afb7c] Tom的提交
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 d.txt

$ git push

这时,服务器的分支变成了

$ git log --oneline --decorate --graph --all
* 19afb7c (HEAD -> master, origin/master, origin/HEAD) Tom的提交
* df6797b 远程提交2
* bc91f76 远程提交1

技术图片

你与服务器出现了偏差,你可以使用git fetch origin命令,查询origin对应的服务器得知,并从服务器取得所有本地尚未包含的数据,然后更新本地数据库,最后将origin/master指针移动到最新的位置上去

$ git fetch origin
$ git log --oneline --decorate --graph --all
* 19afb7c (origin/master, origin/HEAD) Tom的提交
| * d437fa1 (HEAD -> master) 本地提交1
|/
* df6797b 远程提交2
* bc91f76 远程提交1

技术图片

以上是关于远程分支的主要内容,如果未能解决你的问题,请参考以下文章

Git 创建远程分支并提交代码到远程分支

Git创建远程分支并提交代码到远程分支

Git 拉取远程代码

远程分支管理

GitLab Guide

Git拉取远程分支到本地