如何删除合并提交

时间:2015-10-30 15:49:41

标签: git workflow

在下图中,您将首先看到真实情况,然后是我想要的解决方案

enter image description here

所以我想撤消从B到A的合并。

问题是所有内容都已经被推送,并且开发继续进行分支C,并且在与B合并之后我也对A进行了新的提交。

是否可以将此git情况更改为第二个图像,或者是“反向提交”是纠正错误的唯一方法?

我做了什么?

  • 发布用于合并的提交
  • 在A
  • 的新提交中修改分支C.
  • 强制推送在C上制作的rebase以更改远程分支

但我得到的计划看起来并不清楚,这就是为什么我在寻找另一个答案

1 个答案:

答案 0 :(得分:2)

Branch C looks like that:

...--a---------M--f--g--h--i--j
      \       /      ^        ^
       b--c--d      [A]      [C]
             ^
            [B]

First, you should rebase branch C:

git rebase --onto <sha-of-commit-a> B C

After this operation branch C should look like that:

a--f'--g'--h'--i'--j'
                   ^
                  [C]

Now is the time to update branch A:

git checkout A
git reset --hard <sha-of-commit-g'>

That's all. Your repository should look like this merge never happened.