You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何此Git合并提交未显示差异?冲突处理后删除行未出现在diff中

为什么合并提交的diff中没有显示删除添加行的操作?

这其实是Git合并提交默认的combined diff行为导致的,我来给你拆解清楚:

核心原因:Git合并提交的diff逻辑不一样

普通提交的diff是和它的唯一父节点对比,但合并提交有两个父节点(这里是16fcbc7和6c0160b)。默认情况下,git show或git log -p展示合并提交时会用combined diff模式——这个模式只会显示那些最终结果与所有父节点都存在差异的行,目的是突出合并时真正需要手动解决冲突的内容,而不是简单罗列两个分支各自的修改。

结合你的场景具体分析

咱们看你的两个分支修改:

  1. master分支(16fcbc7):新增了一行and it all was left unspoken, in the vastness of the ocean,
  2. capitalize-lenore分支(6c0160b):把所有Lenore改成LENORE,没有新增那行

你合并时选择保留capitalize-lenore的修改,也就是放弃了master新增的那行。此时合并后的结果:

  • 对于Lenore→LENORE的修改:合并结果和capitalize-lenore父节点完全一致,只和master父节点不同,不符合「与所有父节点都有差异」的条件,所以不会出现在combined diff里。
  • 对于master新增的那行:合并结果里没有这行,和master父节点不同,但和capitalize-lenore父节点完全一致(因为这个分支本来就没有这行),同样不符合combined diff的展示条件,所以也不会显示。

怎么查看合并提交的完整修改?

如果你想看到合并提交实际做了什么,可以用以下方法:

  • 分别对比合并提交与两个父节点的差异:
    # 对比合并提交和master父节点(16fcbc7)的差异
    git diff 584d05b^1 584d05b
    # 对比合并提交和capitalize-lenore父节点(6c0160b)的差异
    git diff 584d05b^2 584d05b
    
  • 或者让Git把合并提交拆分成两个虚拟的普通提交来展示:
    git show -m 584d05b
    

内容的提问来源于stack exchange,提问作者dta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:22:42