"refs/heads/master"和Git中的"refs/remotes/origin/master"相同吗?

Tow*_*wer 26 git

问题很简单:是refs/heads/master一回事refs/remotes/origin/master吗?如果不是在某些情况下,我怎么知道它何时不存在又是什么呢?

Ben*_*son 34

它们是两个不同的符号名称,可以指向不同的东西. refs/heads/master是您工作副本中的一个分支master.通常这是跟踪分支refs/remotes/origin/master因为origin是创建的远程的默认名称,git clone并且其主分支通常也被命名master.

您可以看到它们之间的区别,git rev-list refs/heads/master..refs/remotes/origin/master如果它们相同则将为空,否则将列出它们之间的提交.


Mar*_*air 27

要理解的关键区别在于,分支下refs/heads/的分支是,当您签出一个分支时,您可以通过创建新的提交来推进.refs/remotes/然而,那些是所谓的"远程跟踪分支" - 这些引用只是指向远程存储库在您最后一次执行a git fetch <name-of-remote>或成功git push到该远程存储库中的相应分支时的提交.(我写了一篇博文,在这里讨论了这个差异.)