如何执行Git反向cherry-pick操作?移除错误提交保留正确提交
移除错误提交的反向Cherry-Pick操作方案
假设原分支提交序列为:正确提交1 → 错误提交X → 错误提交Y → 正确提交2 → 正确提交3,需在新分支保留正确提交、移除错误提交的修改,可按以下方式操作:
方法一:反向Cherry-Pick撤销错误修改
- 切换到目标分支(如你创建的
new-branch):git checkout new-branch - 对每个错误提交执行反向cherry-pick,生成撤销该提交修改的新提交:
git cherry-pick -x -m 1 <错误提交SHA值>-x:在新提交信息中标记该操作源自原错误提交,便于追溯-m 1:针对普通提交(非合并提交),若为合并提交需指定父分支序号
- 若出现冲突,手动解决后执行:
放弃操作可执行:git add . git cherry-pick --continuegit cherry-pick --abort
方法二:选择性Cherry-Pick正确提交(更高效)
若错误提交数量多,直接挑选所有正确提交到新分支:
- 确保处于
new-branch分支:git checkout new-branch - 按提交时间从早到晚的顺序,依次cherry-pick正确提交:
git cherry-pick <正确提交1的SHA> git cherry-pick <正确提交2的SHA> git cherry-pick <正确提交3的SHA> - 冲突处理同方法一:解决后执行
git add .和git cherry-pick --continue
注意事项
- 你之前切换到master后能看到原分支commit是正常现象,
git log默认展示全部分支的提交记录,不影响后续操作 - 反向cherry-pick不会修改原分支历史,属于安全的历史调整方式
内容的提问来源于stack exchange,提问作者Bruno Peixoto
相关产品推荐
相关产品推荐

