提示 "You have not concluded your merge (MERGE_HEAD exists)" 怎么办
该提示说明上一次合并未完成(冲突未解决完或没提交)。git status 查看冲突文件,解决后 git add + git commit 完成合并;不想合了用 git merge --abort 中止。
含义:你正处于"合并进行中"的状态——上次 merge 可能因冲突暂停,也可能使用 --no-commit 尚未提交,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 或完成合并,不要手工删除状态文件。在 linked worktree 中 .git 可能是文件,用 git rev-parse --git-path MERGE_HEAD 定位实际路径;执行中止前保存需要保留的未提交内容。
Q:cherry-pick / revert 卡住也报类似提示?
对,对应中止命令是 git cherry-pick --abort 和 git revert --abort。它们使用各自操作状态,cherry-pick 可有 CHERRY_PICK_HEAD,revert 可有 REVERT_HEAD,连续操作还涉及 sequencer。
Q:解决冲突后忘了 add 就 commit?
Git 会拒绝并提示还有 unmerged 路径。必须 git add 标记已解决后才能提交。