Git 撤销合并

合并时冲突

合并时存在冲突,冲突未解决或者解决到一半不想解决了,或者解决完冲突了但是还没提交,想要回退到合并前的状态,使用git merge --abort来退出合并。

该命令会尝试恢复到合并前的状态。注意在合并前,最好把改动暂存或者提交,总之就是尽可能保持工作目录干净再合并,否则可能会有些情况不能正确处理。

合并后回退

如果已经合并完,且提交了,想要回退,可以运行git reset --merge ORIG_HEAD

ORIG_HEAD指向合并前的提交,--merge表示在重置时保留当前工作目录中的更改,这表示:

  • 如果当前工作目录中有未提交的更改,这些更改将被保留。
  • 只有在HEADORIG_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

Pro Git 中文版(第二版)

扩展:

HEAD and ORIG_HEAD in Git - Stack Overflow

posted @ 2024-09-20 20:24  Higurashi-kagome  阅读(558)  评论(0)    收藏  举报