冲突文件改完直接 git commit,提交里只有 2 个文件,剩下 3 个还是 modified。git status 上方还挂着 Unmerged paths,提交却已经生成了。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,冲突解决后要把文件重新 git add,标记成已解决,commit 只收暂存区里的内容。没标记的路径仍留在工作区,提交照样能成功,于是只带走了先 add 的那一半。
「冲突未全部暂存」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。
git status --short git add src/order.ts src/pay.ts git commit --no-edit git show --stat --oneline HEAD
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
具体做法是,git status --short 里 UU 和 AA 开头的路径全部处理完 一个都别留;逐个 git add 解决后的文件 再跑一次 git status 确认没有 Unmerged paths;用 git commit --no-edit 提交 合并信息保持默认;提交后用 git show --stat 核对文件数和冲突前对比;漏掉的文件补一次提交 别用 amend 改已推送的合并。
最后用这个标准收尾,git status 里 Unmerged paths 为空 提交的文件数和冲突涉及的目录对得上。
