Git: 还原合并错误

Git: revert merge error

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

git revert <commit-id>

但是,我得到了错误

error: Commit c49aaca4acf461cc41390c1d1d3477f09e25a368 is a merge but no -m option was given. fatal: revert failed

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

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

但是,如果您 merge 遇到冲突,如果您 merge 使用 --no-ff 选项(没有快进)或者如果 Git 不能 fast-forward, Git 创建一个 merge commit.

A merge commit 是专用于 link 两个分支的提交,它引用作为分支尖端的 2 个提交(在本例中为 2 个父级)。

当你想恢复这种类型的提交时,你需要指定剩下的分支应该是哪个分支。如 Git doc 所述:

Reverting a merge commit declares that you will never want the tree changes brought in by the merge

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

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

git revert c49aaca4acf461cc41390c1d1d3477f09e25a368 -m 1

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

git checkout -b you-name-it

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