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]
所以在此图的末尾,master
和 alternate-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 解决了这个问题。
我被这个 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]
所以在此图的末尾,master
和 alternate-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 解决了这个问题。