首页/开发/Git 与协作速查/冲突期间的 diff 用法
合并变基与冲突71 条

冲突期间的 diff 用法

冲突暂停时 git diff 的语义与平时不同:默认显示组合差异;--ours/--theirs 比较工作区与某一侧,-1/-2/-3? 走索引阶段对比。

Git 与协作速查开发更新于 2026-10-13

冲突期间的差异用法

冲突暂停期间差异输出的语义与平时不同:默认显示组合差异,用多列标记表示每一侧的变化;也可以按需要只比较工作区与某一侧,或者直接比较两侧版本的内容。选对比较方式,判断冲突会快很多。

基本信息

组合差异默认输出,包含冲突标记的区块
单侧对比只比较工作区与某一侧的内容
两方对比直接比较双方版本的内容差异
登记之后默认输出看不到改动,需要改看暂存区
脚本注意组合差异的标记格式与普通差异不同

典型使用场景

  • 判断工作区当前内容相对某一侧改了什么
  • 比较双方版本,弄清真正的分歧点
  • 确认冲突是否已经处理干净
  • 评审他人提交的冲突解决结果
  • 脚本化处理冲突时需要区分输出格式

常用示例

常用示例
git diff                              # 组合差异,含冲突标记
git diff --ours -- src/app.js          # 与当前分支一侧比较
git diff --theirs -- src/app.js        # 与被合并进来的一侧比较
git diff :2:src/app.js :3:src/app.js   # 直接比较两方版本
git diff --cached                      # 登记后查看已解决的内容

输出与含义

命令形式含义
默认形式组合差异,多列标记表示各侧变化
单侧形式工作区与指定一侧之间的差异
两方形式两侧版本之间的内容差异
暂存区形式已登记内容与当前提交的差异
组合差异在登记之前显示,登记之后默认输出里看不到改动,应改用查看暂存区的方式确认。
两方对比最适合判断取舍:把两边版本直接摆在一起,真正的分歧点会立刻显现。
脚本解析时要注意组合差异的标记格式与普通差异不同,不能复用同一套解析逻辑。
处理完一个文件就先登记再继续下一个,可以随时用差异命令确认进度。

易错点

  • 登记之后默认差异输出看不到改动,误以为内容丢失,实际内容在暂存区
  • 用组合差异的解析逻辑去处理普通差异,脚本在切换场景后输出错乱
  • 只比较一侧就下结论,忽略另一侧的改动意图,解决结果可能违背原设计
  • 冲突尚未处理完就提交,把冲突标记一起提交进仓库,后续需要额外清理

数据来源与参考

  • Git 官方文档:git-diff(--ours/--theirs、combined diff)
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌