runoops.com

Git中撤销中间的某次merge代码

git revert之后,假如想在后续再加入这个merge分支就不行,因为系统默认你已经合并过了,导致分支代码没法再次合并,这时可以用git reset操作:

用【git reset】回到出错版本的上一个版本:

git reset --hard 3c2af5a7

用【git cherry-pick】把出错版本后面的commit合并进去:

git cherry-pick 9dba07f4^..32aba548 ##出错版本后的第一个commit直至最新commit

或者使用单次合并:

git cherry-pick 9dba07f4

如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。

(1)--continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue

(2)--abort

发生代码冲突后,放弃合并,并还原修改的文件。

(3)--skip

跳过此Patch修改

(4)--quit

发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

合并冲突后,提交代码,使用强制推送把旧分支进行覆盖:

git push --force

git cherry-pick 使用指南