合并 release 到 main 时有 14 个冲突文件,作者统一选了 ours,把另一个分支的 30 行导出逻辑删掉了。单测覆盖不到这个分支,发布后导出按钮点了没反应。日志里能对上时间点,这种反而好排。
冲突处理按文件整体选边,没有逐块看。这个功能没有对应测试,删掉也不会红。合并后也没人复查冲突文件的 diff。这一点先确认清楚,后面就不用反复试。
git diff --stat HEAD~1 git log --merges -1 --stat git show --cc --stat HEAD
「冲突丢代码」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。
处理上按这个顺序:冲突逐个 hunk 处理 不要整文件选 ours 或 theirs;合并后单独看一遍冲突文件的最终 diff;给容易被误删的分支补测试;合并提交要求第二个人复查 只复查冲突部分。
结果对不对很好判断,合并后冲突文件的 diff 与两边意图一致,删掉的逻辑能在测试里被发现。
