冲突期间的差异用法
冲突暂停期间差异输出的语义与平时不同:默认显示组合差异,用多列标记表示每一侧的变化;也可以按需要只比较工作区与某一侧,或者直接比较两侧版本的内容。选对比较方式,判断冲突会快很多。
基本信息
| 组合差异 | 默认输出,包含冲突标记的区块 |
|---|---|
| 单侧对比 | 只比较工作区与某一侧的内容 |
| 两方对比 | 直接比较双方版本的内容差异 |
| 登记之后 | 默认输出看不到改动,需要改看暂存区 |
| 脚本注意 | 组合差异的标记格式与普通差异不同 |
典型使用场景
- 判断工作区当前内容相对某一侧改了什么
- 比较双方版本,弄清真正的分歧点
- 确认冲突是否已经处理干净
- 评审他人提交的冲突解决结果
- 脚本化处理冲突时需要区分输出格式
常用示例
常用示例
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 # 登记后查看已解决的内容输出与含义
| 命令形式 | 含义 |
|---|---|
| 默认形式 | 组合差异,多列标记表示各侧变化 |
| 单侧形式 | 工作区与指定一侧之间的差异 |
| 两方形式 | 两侧版本之间的内容差异 |
| 暂存区形式 | 已登记内容与当前提交的差异 |
组合差异在登记之前显示,登记之后默认输出里看不到改动,应改用查看暂存区的方式确认。
两方对比最适合判断取舍:把两边版本直接摆在一起,真正的分歧点会立刻显现。
脚本解析时要注意组合差异的标记格式与普通差异不同,不能复用同一套解析逻辑。
处理完一个文件就先登记再继续下一个,可以随时用差异命令确认进度。