git mergetool 是什么
git mergetool 调用外部可视化工具逐文件处理冲突,省去在终端里手工删改标记。多数工具提供多窗格视图:base 是共同祖先,ours 与 theirs 是两侧版本,最后一格是待保存的结果。它可以用 --tool 指定工具,也有配置项控制是否保留 .orig 备份文件。工具只负责帮你合并文件,处理完仍需 git add,提交与否由你自己决定。
基本信息
| 用途 | 用可视化工具处理冲突文件 |
|---|---|
| 语法 | git mergetool [--tool=<名称>] |
| 常用工具 | vimdiff、kdiff3、meld、VS Code 等 |
| 备份文件 | mergetool.keepBackup 控制是否保留 .orig |
| 平台 | 需桌面环境,CI 与容器中通常不可用 |
典型使用场景
- 冲突文件较大、逐行手工处理容易出错
- 需要同时对照 base 与两侧内容做取舍
- 把冲突处理交给熟悉的图形工具,减少命令切换
- 批量处理多个文件的冲突,逐个确认并保存
- 排查工具行为差异导致的半成品文件
- 给不熟悉命令行的成员提供一条可行路径
配置与使用
配置与使用
git config --global merge.tool vimdiff # 指定默认工具
git config --global mergetool.keepBackup false # 不保留 .orig 备份
git mergetool # 逐个文件处理
git mergetool --tool=meld src/app.js # 指定工具处理单个文件
git status # 处理完复核并 git add常见工具与特点
| 工具 | 特点 |
|---|---|
| vimdiff | 终端内可用,无需图形界面 |
| meld / kdiff3 | 图形界面,四窗格视图直观 |
| VS Code | 编辑器内置,适合已是日常编辑器的情况 |
多数工具提供四窗格视图(base、ours、theirs、结果);处理完仍需 git add,工具调用不会自动提交。
关闭备份文件后,误保存时少了 .orig 这条退路,第一次使用某工具时建议先保留备份,熟悉后再关。
处理冲突的收尾动作
- 工具保存后 git status 确认文件已标记为解决
- git add 把解决结果纳入索引
- 全部处理完再提交或继续变基
- 跑一次构建或测试,确认合并结果可用
多人协作时先约定用哪一类工具:终端派用 vimdiff,图形派用 meld 或 kdiff3,混用时保存格式与行尾处理差异会让 diff 出现整篇变更。