错误地进行壁球合并后使主分支清洁

时间:2017-07-12 21:33:58

标签: git merge

我们的团队一直致力于develop,偶尔会在master进行PR。几个月前,我们做了一个公关,并使用了南瓜合并(缺乏关于效果的知识)来将develop更改为master。此提交已被推送。 该团队已经在develop继续工作了几个月,现在我们已经在develop提交了400多份提交。根据比较,master有一个不在develop上的提交:壁球合并。

这就是我理解树的样子:

---X---------------S  <-- master
  / \             
-     ---A---B---C-----D1---D2 ... Dn  <-- develop

SABC的压缩合并。

现在,当尝试将develop合并到master(或反过来)时,我们会遇到很多冲突,因为两个分支都有变化(虽然从相同的变化开始)。< / p>

有什么好办法解决这个问题?有没有办法“撤消”壁球合并并回到“好”状态(例如:X)?

1 个答案:

答案 0 :(得分:1)

假设:

-M1--X---------------S  <-- master
    / \             
-D1     ---A---B---C--  <-- develop

你可以这样做:

  • 在壁球之前检查提交
  • 执行合并,无需压缩
  • 在壁球之后发生的樱桃挑选提交

你应该得到你现在拥有的相同内容,但是用合并代替了壁球。

那是:

git checkout -b master-new M1
git merge D1
git cherry-pick S

在此之后,如果master-new看起来不错,那么您可以备份master并替换为master-new。 (并祈祷没有人会介意你重写历史。)