Github 认为合并后分支不同

Github thinks branches are different after merge

我被这个 Github 问题撞得头破血流,终于来这里寻求帮助了。我的 repo 有两个感兴趣的分支:master,这是当前的实时发布分支,以及 alternate-testing,这听起来确实如此。我们的开发流程有定期分支(和分叉)alternate-testing 的功能分支,然后合并回 alternate-testing。最后,alternate-testing周期性地合并到master。请注意,测试分支是 master 的看门人 - 除了通过 alternate-testing.

之外,什么都不会进入 master

非常清楚,这不是这样的情况:

1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 [master]
       \                      /
        A -- B -- C -- D -- E [alternate-testing]

this question 一样,因为 master 永远不会自己改变 。一个更相关的图表是:

1 -- 2 ---------------------- * -- 8 [master]
       \                      /
        A -- B -- C -- D -- E [alternate-testing]

所以在此图的末尾,masteralternate-testing 必须相同。分支后 master 没有变化, alternate-testing 中的所有变化都已合并到 master.

然而,GH 显示两个分支不同步。我今天早上刚做了合并,GH 说 master: "This branch is 3 commits ahead, 29 commits behind alternate-testing."

这怎么可能,我该如何解决这个令人抓狂的问题?

感谢评论者帮助我指明了正确的方向。我们一直在用 Squash+Merge 合并我们的 PR,这有利于简化提交历史。

Squash 的工作原理是创建一个新的提交,然后将其合并,但 到基本分支。因此,虽然基础分支中的代码在合并到 PR 分支后是相同的,但基础分支有一个额外的提交。看来 GH 应该把 squash commit 放在两个分支上来维护真实的历史。

我们通过使用普通的合并而不是 Squash+Merge 解决了这个问题。