提示 "You have not concluded your merge (MERGE_HEAD exists)" 怎么办
该提示说明上一次合并未完成(冲突未解决完或没提交)。git status 查看冲突文件,解决后 git add + git commit 完成合并;不想合了用 git merge --abort 中止。
含义:你正处于"合并进行中"的状态——上次 merge 因冲突暂停,Git 在等待你解决并提交。此时很多操作(checkout、pull)都会被这个提示挡住。两条出路:解决完提交,或 git merge --abort 放弃。
出路一:完成合并
git status # 看哪些文件冲突(Unmerged paths)
vim 冲突文件 # 解决 <<<<<<< 标记
git add 冲突文件
git commit # 完成合并(信息已预填)
出路二:放弃合并
git merge --abort # 回到合并前状态
避免再次卡住的预防
- 合并前确保工作区干净(
git status); - 冲突多时别拖太久——合并状态期间工作区是"半成品",容易误操作;
- 用 IDE 的合并工具(VS Code 三路合并视图)降低解决冲突的心智负担。
常见问题(FAQ)
Q:.git/MERGE_HEAD 文件是干嘛的?
它就是"合并进行中"的标记文件,记录了正在合入的提交。git merge --abort 会删除它;手工删文件也能强制退出合并状态,但可能导致索引不一致——优先用 --abort。
Q:cherry-pick / revert 卡住也报类似提示?
对,对应中止命令是 git cherry-pick --abort 和 git revert --abort。原理相同(CHERRY_PICK_HEAD 文件)。
Q:解决冲突后忘了 add 就 commit?
Git 会拒绝并提示还有 unmerged 路径。必须 git add 标记已解决后才能提交。