如何恢复合并?

时间:2017-03-03 01:58:13

标签: git

我分叉了一个回购并进行了一些更改然后将它推入我的主分支。然后我从我分叉的repo中获取了更改并将其合并到我的master中。我遇到了很多合并冲突。我修复了它们,但代码中的某个地方我错过了一个改变。我没有推动这一改变,也没有提交过。如何恢复合并?我分配的repo的提交有旧提交,我的repo有我的新提交。

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,您将某些内容合并到master,但是存在某种问题,您想要取消合并并可能重新开始。在这种情况下,我认为你可以逃脱以下:

git reset --hard HEAD

因为你还没有提交任何东西,所以合并的唯一真正效果是你的直接文件,可能还有你的舞台,从合并中“脏”。在尝试合并之前,上述命令会将工作和暂存文件重置为HEAD提交时的状态。但是你的分支的实际历史还没有改变,所以你在这方面是安全的。

如果您好奇如果 已经提交了合并,可能与其他工作现在在合并提交之上,那么您可以使用git rebase直接进行合并承诺。请看下图:

... A --- B --- C --- F ...  master
     \               /
      --- D --- E ---        feature

此处,feature在提交master时与A不同,但随后在合并提交master合并回F。现在您要删除该合并提交。您可以将master重新定义为A,如下所示:

git rebase <SHA-1 of commit A>

Git会在master之上重播A的所有提交,但是忽略 F发生的合并提交。默认行为是忽略合并提交并向后跟随主父路径,因此这是处理这种情况的一种方法。