git merge --continue 是什么
git merge --continue 在冲突全部解决并 git add 之后,用来生成这次合并的提交。它等价于直接 git commit,区别在于语义更明确:表达「我正在推进一次被冲突中断的合并」,也不会让人误以为要另写一条新提交。
解决冲突的完整闭环
典型流程是:先用 git status 看清哪些文件处于未合并状态,逐个编辑解决并 git add 标记完成,等状态里不再有未合并路径,再执行 merge --continue 生成合并提交。整个过程的核心动作其实是 add,--continue 只负责最后收口。
基本信息
| 适用平台 | Linux / macOS / Windows(Git 2.x) |
|---|---|
| 语法 | git add <文件> 之后执行 git merge --continue |
| 等价命令 | git commit,自动带入合并信息 |
| 前提 | 所有冲突路径都已标记为解决 |
| 提交信息 | 默认为自动生成的合并信息,可用 -m 覆盖 |
| 相关命令 | rebase、cherry-pick、revert 也有各自的 --continue |
典型使用场景
- 完成合并:冲突解决完,用它将结果落成一条合并提交
- 明确意图:在脚本或团队流程里用它替代笼统的 commit
- 批量收口:多个文件解决完之后一次性提交
- 固化流程:在操作文档里写清 add 之后 continue 的标准步骤
- 排查卡点:反复失败时用它确认是否仍有未解决路径
常用示例
常用示例
git status # 查看未合并路径
git add src/login.js README.md # 逐个标记已解决
git status --short # 确认没有 UU 状态的文件
git merge --continue # 生成这次合并的提交
git commit -m 'Merge feature/login' # 等价的显式写法
git log --graph --oneline -5 # 核对合并结果卡住时的自查
| 现象 | 原因 | 处理 |
|---|---|---|
| 提示仍有未合并路径 | 还有文件没解决或没 add | 用 status 逐个补齐 |
| 提示没有正在进行的合并 | 合并已结束或已被中止 | 改用 commit 或查看 log |
| 编辑器打开要求写信息 | 这是默认行为 | 保存退出,或设 GIT_EDITOR=true |
| 提交后文件里仍有标记 | 解决时漏删标记 | 用 diff --check 扫描后补一次提交 |
仍有未解决文件时,--continue 会再次提示 unresolved。用 git status 列出 both modified 的文件名,逐一处理即可。
只修改文件却忘记 git add,Git 仍然视该文件为未解决,--continue 会持续失败,容易被误判成命令有问题。