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

Git:如何恢复合并和其他两个相邻的提交?,git,merge,revert,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..

我们有以下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
我该怎么做


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

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

(嗯,首先,完成或中止樱桃拾取或恢复你现在的中间状态。然后检查合并是否包括其中一个提交的更改。)< /P> 现在,您已经确定哪些提交要还原,哪些提交需要

-m
选项,哪些提交不需要使用
-m
选项,请一次执行一个,最新的一个:

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

比如说。请注意,这将生成三个单独的新提交,每个提交执行一个还原。(这也是使用
符号可以得到的。)如果您想得到一个大的恢复提交,请每次使用
git revert-n
,并在完成后分别提交最终结果。

您是否尝试过中止正在放弃的樱桃选择?是否确实要恢复?由于在ec345d9之后没有您想要保留的提交,签出/移动主控不是更容易吗?“还原”创建与还原的提交相反的新提交:它前滚到旧状态。checkout/branch-d master/branch master(或您所在的任何分支)只是将分支回滚到所需的提交,并使其他提交悬而未决。下次你gc时,它们会消失。最后我意识到我不需要恢复合并,所以我只做了第一次和第三次恢复,它工作正常。谢谢