Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何删除合并提交_Git_Workflow - Fatal编程技术网

Git 如何删除合并提交

Git 如何删除合并提交,git,workflow,Git,Workflow,在下图中,您将首先看到真实情况,然后是我想要的解决方案 所以我想撤销从B到A的合并 问题是,所有的事情都已经完成了,分支C的开发也在继续,而且在将a与B合并后,我在a上做了一个新的提交 是否可以将此git情况更改为第二个映像,或者“反向提交”是纠正错误的唯一方法 我做了什么? 显示用于合并的提交 重新设置分支C在来自 强制推动C上的rebase以更改远程分支 但是我得到的结果方案看起来不清楚,这就是为什么我在寻找另一个答案,分支C看起来是这样的: ...--a---------M--f--

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

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

问题是,所有的事情都已经完成了,分支C的开发也在继续,而且在将a与B合并后,我在a上做了一个新的提交

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

我做了什么?
  • 显示用于合并的提交
  • 重新设置分支C在来自
  • 强制推动C上的rebase以更改远程分支

但是我得到的结果方案看起来不清楚,这就是为什么我在寻找另一个答案,分支C看起来是这样的:

...--a---------M--f--g--h--i--j
      \       /      ^        ^
       b--c--d      [A]      [C]
             ^
            [B]
a--f'--g'--h'--i'--j'
                   ^
                  [C]
首先,您应该重新设置分支
C

git rebase --onto <sha-of-commit-a> B C
现在是更新分支
A
的时候了:

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

git reset——很难如果您刚刚编辑的“我做了什么”部分是您的解决方案,您应该将其从问题中编辑出来,并将其作为答案发布。@DaveZych这不是我要寻找的答案,我做了另一个editgreat!我在一个示例git存储库上测试了这一点,它确实起了作用!但我不会在“真实”存储库中这样做,因为自从我注意到这一点以来,已经有太多的事情发生了。