Git 撤销合并
合并时冲突
合并时存在冲突,冲突未解决或者解决到一半不想解决了,或者解决完冲突了但是还没提交,想要回退到合并前的状态,使用git merge --abort来退出合并。
该命令会尝试恢复到合并前的状态。注意在合并前,最好把改动暂存或者提交,总之就是尽可能保持工作目录干净再合并,否则可能会有些情况不能正确处理。
合并后回退
如果已经合并完,且提交了,想要回退,可以运行git reset --merge ORIG_HEAD。
ORIG_HEAD指向合并前的提交,--merge表示在重置时保留当前工作目录中的更改,这表示:
- 如果当前工作目录中有未提交的更改,这些更改将被保留。
- 只有在
HEAD和ORIG_HEAD之间的更改会被重置。
当然,也可以先用git reflog之类的命令查看提交记录,找到需要回退到的 commit-id,然后运行git reset --merge <commit-id>。
类似的命令有git reset --hard ORIG_HEAD,它会回退到ORIG_HEAD所指向的提交,且不会保留当前工作目录中的更改。
关于reset命令的更多内容参见使用 git reset 命令回退历史。
参考:
Undo a Git merge that hasn't been pushed yet - Stack Overflow
扩展:
浙公网安备 33010602011771号