Git:如何还原合并和另外两个相邻的提交?

时间:2017-11-06 21:40:19

标签: git merge revert

我们有这个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选项。当我在过去使用它时,我只是恢复单个合并提交。但在这种情况下,合并提交夹在我试图恢复的其他两个提交之间。

1 个答案:

答案 0 :(得分:2)

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

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

既然您确定哪些提交要还原,哪些提交需要-m选项,哪些要求使用-m选项,请执行以下操作:一段时间,最近的第一次:

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

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