Dr.*_*rew 6 git version-control github merge-conflict-resolution git-merge-conflict
我已经用这个 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]
Run Code Online (Sandbox Code Playgroud)
就像在这个问题中一样,因为 master本身永远不会改变。更相关的图表是:
1 -- 2 ---------------------- * -- 8 [master]
\ /
A -- B -- C -- D -- E [alternate-testing]
Run Code Online (Sandbox Code Playgroud)
所以在这个图的末尾,master和alternate-testing必须是相同的。master分支之后没有任何变化,并且每个变化alternate-testing都被合并到master.
然而,GH 显示两个分支不同步。我今天早上刚刚完成了合并,GH 说master:“这个分支提前 3 次提交,在备用测试之后 29 次提交。”
这怎么可能,我该如何解决这个令人抓狂的问题?
感谢评论者帮助我指出正确的方向。我们一直在将我们的 PR 与 Squash+Merge 合并,这具有简化提交历史的好处。
壁球作品通过创建一个新的提交,然后被合并,但只到主分支。因此,虽然合并后基本分支中的代码与 PR 分支中的代码相同,但基本分支有一个额外的提交。似乎 GH 应该将壁球提交放在两个分支上以保持真实的历史记录。
我们已经通过使用普通的 Merge 而不是 Squash+Merge 解决了这个问题。