合并后分支比原点领先多个提交

时间:2021-05-24 05:45:44

标签: git git-merge git-branch

我有两个看起来像这样的分支:

    X--X [origin/master, master]
.../ 
   \         
    ----X--X--X--X--X--X [origin/x, x]

然后我将 x 合并到 master 所以现在我有了这个:

       [origin/master]
    X--X------------------X [master]
.../                     /
   \                    /
    ----X--X--X--X--X--X [origin/x, x]

现在当我 git status 我得到:

On branch master
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" ...)
...

为什么是 7 次提交?从图片(我在看 git log --graph 时画的)看来,它应该领先 1 次提交。其他 6 次提交用于分支 x

1 个答案:

答案 0 :(得分:5)

<块引用>

其他 6 个提交用于分支 x

啊哈,那正是你错的地方。 ? 请记住,Git 中的分支不是 提交链,正如您所想的那样。这是一个提交。通过沿着父链向后走,其他所有内容都只是从该一次提交可达的提交。

嗯,一个合并提交,比如你刚刚创建的,有 两个 父级,其中一个是刚刚合并的分支提交。所以在合并之后,所有的提交都是以前只能从 master 访问,现在也可以从 x 访问(因为 master 现在是 master 的父级之一,也就是合并提交)。

因此,Git 在这里所做的就是计算现在可以从 origin/master 访问但从 [origin/master] 7 X--X------------------X [master] .../ / \ / ----X--X--X--X--X--X [origin/x, x] 1 2 3 4 5 6 无法访问的提交数量,如下所示:

origin/master

Git 不关心使之成为这样的拓扑;它只是报告一个数字。

所以 Git 报告的数字可能看起来不直观,但实际上它是完全准确的。这是一个有用的数字! Git 正确地报告说,如果您现在要推送,导致 master 向上移动到 origin/master,然后 LoanCollaterals 将能够达到它目前无法达到的 7 个提交,并且远程存储库将获得它目前没有的 7 个提交。

相关问题