【发布时间】:2014-02-08 18:24:55
【问题描述】:
问题很简单:refs/heads/master 和refs/remotes/origin/master 是一回事吗?如果在某些情况下不是,我怎么知道什么时候不是,然后是什么?
【问题讨论】:
-
如果我错了,请有人纠正我,但你不应该有
refs/origin/master。应该是refs/remotes/origin/master。
标签: git
问题很简单:refs/heads/master 和refs/remotes/origin/master 是一回事吗?如果在某些情况下不是,我怎么知道什么时候不是,然后是什么?
【问题讨论】:
refs/origin/master。应该是refs/remotes/origin/master。
标签: git
它们是两个不同的符号名称,可以指向不同的事物。 refs/heads/master 是工作副本中名为 master 的分支。这通常是refs/remotes/origin/master 的跟踪分支,因为origin 是git clone 创建的远程的默认名称,其主分支通常也命名为master。
您可以使用git rev-list refs/heads/master..refs/remotes/origin/master 查看它们之间的区别,如果它们相同,它将为空,否则将列出它们之间的提交。
【讨论】:
要理解的关键区别是refs/heads/ 下的分支是当您签出一个分支时,您可以通过创建新提交来推进。然而,refs/remotes/ 下的那些是所谓的“远程跟踪分支”——这些 refs 只是指向远程存储库在您最后一次执行git fetch <name-of-remote> 或成功的git push 到该远程存储库中的相应分支。 (我写了一篇博文,详细讨论了这种差异here。)
【讨论】: