我用这个Github问题把我的头撞在了墙上,足以终于来到这里寻求帮助。我的repo有两个感兴趣的分支:master
,它是当前的实时发布分支,alternate-testing
,这正是它听起来的样子。我们的开发过程将特征分支定期分支(和分叉)关闭alternate-testing
,然后合并回alternate-testing
。最后,alternate-testing
会定期合并到master
。请注意,测试分支是master
的守门员 - 没有任何内容进入master
但是通过alternate-testing
。
非常清楚,这不是这样的情况:
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 [master]
\ /
A -- B -- C -- D -- E [alternate-testing]
与this question一样,因为主永远不会改变。更相关的图表是:
1 -- 2 ---------------------- * -- 8 [master]
\ /
A -- B -- C -- D -- E [alternate-testing]
因此,在此图表的末尾,master
和alternate-testing
必须完全相同。分支后master
没有变化,alternate-testing
中的每个变化都已合并到master
。
然而,GH表明两个分支不同步。我今天早上做了合并,GH说master
:"这个分支提前3次提交,29次提交备用测试。"
这怎么可能,我该如何解决这个令人抓狂的问题呢?
答案 0 :(得分:4)
感谢评论者帮助我指出正确的方向。我们一直在使用Squash + Merge合并我们的PR,这有利于简化提交历史。
Squash的工作原理是创建一个新的提交,然后将其合并,但仅进入基本分支。因此,虽然基本分支中的代码在合并到PR分支之后是相同的,但基本分支具有额外的提交。似乎GH应该将壁球提交放在两个分支上以维持真实的历史。
我们通过使用普通的香草Merge而不是Squash + Merge来解决这个问题。