Git:如何恢复合并和其他两个相邻的提交?

Git: How to revert a merge and two other adjacent commits?

我们有这个 git 日志:

D:\blah>git log -n 5 --oneline    
fc19dec My change #2
68fa9db Merge branch 
4bc1ac7 My change #1
ec345d9 [maven-release-plugin] prepare for next development iteration

我想恢复到 ec345d9,但出现错误:

D:\blah>git revert --no-commit ec345d9..HEAD
error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: revert failed

我该如何还原?

我知道 issue 恢复合并并需要指定 -m 选项。当我过去使用它时,我只是恢复一个单一的合并提交。但在这种情况下,合并提交夹在我试图恢复的其他两个提交之间。

首先,当您指定 -m 1(或其他主线编号)选项时,请确保您的合并不包括其下方提交的更改。

(好吧,首先首先,完成或中止樱桃选择或恢复到现在。然后检查合并是否包含其中一个提交'变化。)

现在您已确定要还原哪些提交,哪些需要 -m 选项,哪些需要 而不是 使用 -m 选项, 一次做一个,最近的在前:

git revert fc19dec
git revert -m 1 68fa9db
git revert 4bc1ac7

例如。请注意,这会产生三个独立的新提交,每个提交都会进行一次还原。 (这也是使用 .. 表示法得到的结果。)如果你想获得一个大的恢复提交,每次使用 git revert -n,并在完成后单独提交最终结果。