我最近使用git将本地功能分支合并到我的本地主分支。然后我做了一些更改并提交给主分支。现在,我想摆脱我的主分支合并引起的变化。所以我做了一个:
git revert <commit-id>
然而,我收到了错误
错误:提交c49aaca4acf461cc41390c1d1d3477f09e25a368是合并但是 没有-m选项。致命的:恢复失败
仅供参考,我没有向服务器推送任何东西。我在网上搜索但我找不到合适的解决方案。有谁知道怎么做?感谢。
答案 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
分支。