Git:恢复合并错误

ief*_*oix 3 git merge revert

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

git revert <commit-id>
Run Code Online (Sandbox Code Playgroud)

但是,我得到了错误

错误:提交 c49aaca4acf461cc41390c1d1d3477f09e25a368 是合并,但未给出 -m 选项。致命:恢复失败

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

Lex*_*tor 6

在 Git 中,一次提交通常仅引用 1 个父提交。

但是,如果您merge遇到冲突,如果您merge使用了选项--no-ff(不快进)或者 Git 无法快进,Git 将创建一个merge commit.

合并提交是专用于通过引用作为分支尖端的 2 个提交(在本例中为 2 个父级)来链接两个分支的提交。

当您想要恢复这种类型的提交时,您需要指定哪个分支应该是剩余的分支。正如Git 文档中所述:

恢复合并提交声明您永远不会希望合并带来的树更改

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

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

git revert c49aaca4acf461cc41390c1d1d3477f09e25a368 -m 1
Run Code Online (Sandbox Code Playgroud)

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

git checkout -b you-name-it
Run Code Online (Sandbox Code Playgroud)

并在这个新分支上执行revert:如果它具有预期结果,checkout则再次您的master分支并执行revert,如果没有,您的master分支仍然完好无损。