首页/开发/Git 与协作速查/git mergetool 图形化解决冲突
合并变基与冲突71 条

git mergetool 图形化解决冲突

调用外部合并工具逐文件处理冲突;可用 --tool 指定工具,mergetool.keepBackup 控制是否保留 .orig 备份文件。

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

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 出现整篇变更。

易错点

  • 部分工具退出码与保存行为不同,误退会留下半成品;退出后一律 git status 复核
  • 自动化环境(CI 或容器)没有图形工具,别把流程设计成必须依赖 mergetool
  • 关闭备份后误保存会失去回退余地,刚上手时先保留 .orig
  • 工具保存结果后忘记 git add,提交时会发现冲突文件仍未解决
  • 不同工具对行尾与编码的处理有差异,跨平台协作时先确认文件保存后没有整篇变更

数据来源与参考

  • Git 官方文档:git-mergetool
  • Pro Git 2nd Edition · 7.8 高级合并
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌