【问题标题】:Is "refs/heads/master" same as "refs/remotes/origin/master" in Git?Git 中的“refs/heads/master”是否与“refs/remotes/origin/master”相同?
【发布时间】:2014-02-08 18:24:55
【问题描述】:

问题很简单:refs/heads/masterrefs/remotes/origin/master 是一回事吗?如果在某些情况下不是,我怎么知道什么时候不是,然后是什么?

【问题讨论】:

  • 如果我错了,请有人纠正我,但你不应该有refs/origin/master。应该是refs/remotes/origin/master

标签: git


【解决方案1】:

它们是两个不同的符号名称,可以指向不同的事物。 refs/heads/master 是工作副本中名为 master 的分支。这通常是refs/remotes/origin/master 的跟踪分支,因为origingit clone 创建的远程的默认名称,其主分支通常也命名为master

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

【讨论】:

  • 感谢您的澄清 :)
  • 当我尝试使用 git for-each-ref 列出我的所有分支时,它会列出很多带有 refs/remotes/origin/ 的分支但是当我去我们的 github.com回购,我在下拉菜单或其他任何地方都看不到这些分支。为什么会出现这种差异?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2017-12-07
    • 1970-01-01
    • 2021-03-29
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2012-06-29
    相关资源
    最近更新 更多