文本合并
文本合并将文件两个版本中的更改合并为一个可编辑的结果。冲突发生在两处更改彼此不兼容、需要你做出决定时。
布局

这个界面显示同一个文件的三个版本。
- 左侧窗格 是你的版本——本地更改。
- 中间窗格 是 结果——这是唯一可编辑的窗格。
- 右侧窗格 是传入的版本——远端更改。
基准
还有第四个版本:基准,也就是双方开始时共同的原始版本。这对应 Git 的三方合并模型:
Local → Base ← Remote
↓
Result
在 ABDiff 中,中间窗格可以在 结果 和 基准 之间切换,帮助你理解究竟改了什么。

冲突
当双方以不同方式修改同一行时,就会发生冲突。例如,原始值是 “blue”,现在一边改成 “green”,另一边改成 “red”。Git 无法判断哪个更改才是正确的,因此需要手动解决。
这种情况会在两个人同时编辑同一行时出现。如果更改没有重叠,Git 会自动合并;如果重叠了,就需要你手动解决冲突。
如果你已经配置 Git,当 Git 发现冲突时,ABDiff 会启动。结果区域会保持未解决状态,你需要决定它的内容。你有三个选择:
- 使用本地版本解决
- 使用传入版本解决
- 或者自己编写结果
解决冲突
要接受某个结果,请右键点击冲突块,然后选择 采用本方版本解决 或 采用对方版本解决。
如果你想自己写结果:
- 编辑所选行(按 ↩︎ 或双击)
- 或者从任一侧复制行(右键 ▸ 将所选内容复制到结果)
提示:
- 扩展选择(⇧↑ / ⇧↓),一次复制多行
- 用 ⌘Z 撤销任何更改
完成
完成后,保存文件(文件 ▸ 保存 或 ⌘S)。这会告诉 Git 冲突已经解决。
如果你不想解决冲突,直接关闭文件而不要保存即可。
编辑和导航
导航
| 操作 | 快捷键 |
|---|---|
| 上一行 / 下一行 | ↑ / ↓ |
| 上一个窗格 / 下一个窗格 | ← / → |
| 跳到第一行 / 最后一行 | ⌘↑ / ⌘↓ |
| 上一个更改 / 下一个更改 | ⌥↑ / ⌥↓ |
| 上一个更改块 / 下一个更改块 | ⌥↑ / ⌥↓ |
| 切换到其他面板 | ⇥ |
复制
| 操作 | 快捷键 |
|---|---|
| 复制到右侧 | ⌘→ |
| 复制到左侧 | ⌘← |
| 扩展选择 | ⇧↑ / ⇧↓ |
| 采用本方版本解决 | ⇧⌘→ |
| 采用对方版本解决 | ⇧⌘← |
选中的行会显示为灰色矩形。更改块是连续的冲突 / 更改块。只有当复制操作会修改 结果 窗格,且当前选择位于真实行上时,这些操作才可用。按住 Shift 点击某一行,也会在同一窗格内扩展当前选择。
复制更改:
- 使用复制命令复制当前选中的行。
- 使用整块复制来复制包含所选行的整段块。
- 在当前选择范围内右键点击会保留当前选择;在其他位置右键点击则会先选中那一行。
- 当 Shift+Arrow 这些移动可用时,行上下文菜单还会提供 向上扩展选择 / 向下扩展选择。
- 对所选行,你可以右键点击使用 采用本方版本解决 / 采用对方版本解决,也可以从 编辑 菜单中使用它们。
所有复制操作都可以用⌘Z撤销。
编辑
| 操作 | 快捷键 |
|---|---|
| 开始编辑所选结果行 | Return |
| 直接开始编辑结果行 | 双击行 |
| 提交并移动到下一个可编辑行 | Return(编辑时) |
| 提交并退出编辑模式 | Command-Return |
| 取消当前行缓冲并退出编辑模式 | Esc 或 Command-. |
也可以通过双击某一行开始编辑。 所有编辑操作都可以使用⌘Z撤销。
查看选项
文本合并提供一些选项,用于更改比较的计算方式或显示方式。这些选项可在选项菜单中找到。
这些设置会影响匹配和可视化;它们不直接编辑文件。