如何删除合并提交

How can I delete merge commit

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

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

问题是所有的东西都已经推送了,开发在分支C上继续进行,而且我在与B合并后在A上做了一个新的提交。

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

我做了什么?

但是我得到的结果方案看起来不太清楚,这就是我寻求另一个答案的原因

分支 C 看起来像这样:

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

首先,你应该 rebase 分支 C:

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

在这个操作之后分支 C 应该是这样的:

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

现在是更新分支的时候了A:

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

就是这样。您的存储库应该看起来像从未发生过这种合并。