github remotes/origin prefixes

10 浏览
0 Comments

github remotes/origin prefixes

我注意到,由于某种原因,我的一些git分支前缀为“remotes/origin”:

BZ9
 * master   
 remotes/origin/BZ8   
 remotes/origin/BZ9   
 remotes/origin/HEAD -> origin/master   
 remotes/origin/junit1   
 remotes/origin/master

例如,“remotes/origin/BZ9”分支和“BZ9”分支之间有什么区别?显然,它们都源自同一个概念分支,但是git认为它们是不同的。

0
0 Comments

在你的列表中,“BZ9”和“master”都是你可以自由移动、更新和删除的本地分支。当你处于其中一个分支并进行提交时,该分支会更新为指向你最新的提交。

然而,当你输入git branch -a时,出现的带有remotes/origin前缀的名称就像分支一样,但你可以将它们视为“只读”。这些分支你无法直接控制,它们在你进行获取操作时会自动设置,并且直到你再次获取(或拉取)它们才会改变。

这是因为与你的本地分支不同,远程origin分支跟踪你从中拉取代码的服务器上的远程开发。

例如,"remotes/origin/junit1"表示:“上次git从远程origin仓库获取代码时,那里有一个名为junit1的分支,该分支指向这个提交哈希”。

你可以像任何其他分支一样检出该远程分支,但是当你向该分支提交时,分支指针不会更新,因为它不是用于跟踪你的本地进度,而是用于跟踪远程仓库的进度。

你的本地进度由你的本地分支跟踪,你可以根据需要自由地创建、更新和删除它们。

同样地,如果有人从你的仓库克隆,那么当他们从你那里获取代码时,他们会从你那里得到两个远程分支:"remotes/origin/BZ9"和"remotes/origin/master"。换句话说,你的本地分支成为了下游用户的远程origin分支。

因此,你的远程origin分支也只是你上游仓库本地分支的只读副本。

0