首页/开发/Git 与协作速查/git merge --abort 中止合并
合并变基与冲突71 条

git merge --abort 中止合并

放弃进行中的合并,把工作区与索引恢复到合并前状态;仅在合并因冲突暂停、尚未提交时可用。

Git 与协作速查开发更新于 2026-10-13

git merge --abort 是什么

git merge --abort 放弃正在进行的合并,把工作区与索引恢复到合并开始之前的状态。它只在合并因冲突暂停、尚未生成合并提交时有效。执行时 Git 会参考 ORIG_HEAD 记录的位置来还原现场。

什么时候会用到

常见场景是:冲突文件比预想的多、发现合并方向搞错了,或者原本以为只是小范围改动,结果整条分支都被卷了进来。这时与其硬着头皮解一堆冲突,不如先中止合并,重新评估该用哪种方式集成。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git merge --abort
前提存在进行中的合并(MERGE_HEAD)
恢复依据ORIG_HEAD 记录的位置
等效兜底git reset --merge ORIG_HEAD
已提交之后本命令失效,需要 reset 或 revert

典型使用场景

  • 冲突过多:冲突文件超出预期,先中止再重新规划
  • 方向错了:发现把主干反向合进了特性分支
  • 范围失控:合并卷入了大量无关提交
  • 环境不干净:合并前工作区状态不对,先中止整理
  • 权衡方式:中止之后改用变基或压缩合并

常用示例

常用示例
git status                  # 确认确实处于合并中途
git merge --abort           # 中止合并,恢复合并前状态
git status --short          # 核对工作区是否已干净
git log --oneline -3        # 确认分支指向已回到合并前
git reflog -5               # 找不到原位置时从这里回溯
git reset --merge ORIG_HEAD # 等价的兜底写法

中止是否有效

所处时机命令是否有效替代做法
冲突暂停中有效直接执行即可
已解冲突未提交有效但会丢弃成果先确认无需保留
合并提交已生成无效用 reset --hard ORIG_HEAD
合并后已推送无效用 git revert 生成反向提交
--abort 会丢弃你为解冲突已经做出的未提交修改。执行前先确认没有值得保留的内容,必要时先把文件另存一份。
合并提交已经生成之后再执行 --abort 没有任何效果,此时需要用 git reset --hard ORIG_HEAD 或 git revert 才能真正回退。
动手前先用 git status 读首行提示,确认确实处于合并中途;如果提示的是正在变基,对应的命令应是 git rebase --abort,两者不能互用。

易错点

  • 合并提交已经生成后再执行 --abort 没有效果,需要 reset --hard ORIG_HEAD 或 revert
  • --abort 会丢弃为解冲突所做的未提交修改,动手前确认没有值得保留的内容
  • 工作区存在未提交改动时 --abort 可能失败,先 stash 或提交再重试
  • 以为中止就万事大吉,实际应核对 git status 与分支指向是否真的回到合并前

数据来源与参考

  • Git 官方文档:git-merge(--abort)
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌