Git:还原合并错误

时间:2017-03-13 18:13:40

标签: git merge revert

我最近使用git将本地功能分支合并到我的本地主分支。然后我做了一些更改并提交给主分支。现在,我想摆脱我的主分支合并引起的变化。所以我做了一个:

git revert <commit-id>

然而,我收到了错误

  

错误:提交c49aaca4acf461cc41390c1d1d3477f09e25a368是合并但是   没有-m选项。致命的:恢复失败

仅供参考,我没有向服务器推送任何东西。我在网上搜索但我找不到合适的解决方案。有谁知道怎么做?感谢。

1 个答案:

答案 0 :(得分:3)

在Git中,提交通常只引用1个父提交。

但是,如果你merge发生了冲突,如果你merge选择--no-ff(没有快进)或者Git不能fast-forward,那么Git会创建merge commit

merge commit是一个致力于通过引用作为分支尖端的2个提交(在这种情况下为2个父级)来链接两个分支的提交。

如果要还原此类型的提交,则需要指定哪个分支应该是剩余的分支。如Git doc中所述:

  

恢复合并提交声明您永远不会想要树   合并带来的变化

您必须使用父编号选项-m--mainline)进行恢复。 您合并的分支数为 1 ,合并分支的数量为 2

在您的情况下,要在合并功能分支之前返回到master分支的状态,您应该使用命令恢复

git revert c49aaca4acf461cc41390c1d1d3477f09e25a368 -m 1

提示:在启动revert之前,请从master创建一个新分支(假设您当前正在使用该分支)

git checkout -b you-name-it

并在此新分支上执行revert:如果它具有预期结果,checkout再次为您的master分支并执行revert,如果它没有你仍然保持master分支。