问题很简单:refs/heads/master
与refs/remotes/origin/master
相同吗?如果不是在某些情况下,我怎么知道它何时不存在又是什么呢?
答案 0 :(得分:29)
它们是两个不同的符号名称,可以指向不同的东西。 refs/heads/master
是您的工作副本中名为master
的分支。这通常是refs/remotes/origin/master
的跟踪分支,因为origin
是由git clone
创建的远程的默认名称,其主分支通常也被命名为master
。
你可以看到它们之间的区别git rev-list refs/heads/master..refs/remotes/origin/master
如果相同则为空,否则将列出它们之间的提交。
答案 1 :(得分:24)
要理解的关键区别是refs/heads/
下的分支是分支,当您签出一个分支时,您可以通过创建新的提交来推进。然而,refs/remotes/
下的那些是所谓的“远程跟踪分支” - 这些引用只是指向远程存储库在上次执行git fetch <name-of-remote>
时成功提交,或者成功{ {1}}到该远程存储库中的相应分支。 (我写了一篇博文,讲述了这段差异here。)