Command Reference

git-mergetool 教程

解释如何用 git-mergetool 调用外部工具辅助解决合并冲突。

适合谁看
  • 已经会基本提交和分支操作的开发者
  • 想理解命令边界与风险的人
前置知识
  • 知道工作区、暂存区、提交的基本关系
  • 能读懂 `git status` 和简单历史图
常见风险
  • 误把本地整理命令用到共享历史
  • 在没确认恢复路径前直接继续改写历史

一句话理解

git-mergetool 用于调用外部工具辅助解决合并冲突。

什么时候适合用

  • 当你需要调用外部工具辅助解决合并冲突
  • 当你想把这类操作做成稳定流程而不是手工重复
  • 当你需要更准确地理解 Git 在这一步到底记录了什么

基本示例

git mergetool

读这条命令时最该注意什么

这是一个辅助工具,调用你配置的外部合并工具来解决冲突。本身不修改历史,但解决冲突的结果会影响后续提交。

一个更稳的实践建议

在真实仓库执行前,先用一段最小可复现历史做演练。

补充理解角度

  • 处理复杂协作和历史分析问题
  • 把一次性操作收敛成可重复流程
  • 降低高风险操作的偶然性

这条命令在流程里解决什么问题

git mergetool 是一个辅助工具,不直接修改历史或引用。它的作用是在合并或 rebase 产生冲突时,调用你配置的外部合并工具(如 vimdiff、meld、kdiff3)来帮你可视化地解决冲突。它影响的是工作区和暂存区中的冲突文件。

典型用例

  • merge 或 rebase 遇到冲突时,用 git mergetool 启动图形化工具,左右对照解决冲突。
  • 配置 merge.tool 后,每次冲突都可以用熟悉的工具统一处理,提高效率。
  • 对不擅长手动编辑冲突标记的开发者,mergetool 提供了更直观的三路合并界面。

图例理解

冲突解决辅助工具的作用面mergetool 不修改历史,它只是调用外部工具帮你解决工作区中的冲突文件。
输入
冲突文件(工作区)BASE 版本LOCAL 版本REMOTE 版本
结果
解决后的工作区文件已暂存的解决结果
mergetool 本身不创建提交。解决完冲突后需要手动 git add 并继续(git merge --continue 或 git rebase --continue)。

特殊情况与边界

  • 需要先配置合并工具:git config --global merge.tool vimdiff 或其他工具(meld、kdiff3、p4merge 等)。
  • git mergetool 会为每个冲突文件启动一次工具,可以用 git mergetool --no-prompt 跳过确认。
  • 解决完冲突后,需要 git add <resolved-file> 标记为已解决,然后才能继续 merge 或 rebase。
  • 如果不想用 mergetool,也可以直接手动编辑冲突文件,编辑完后 git add 即可。
  • 在 CI/CD 或无头服务器上,mergetool 不可用,需要手动解决或配置自动策略。

延伸阅读

搭配 git status(查看冲突文件列表)、git diff(查看冲突详情)和 git merge --abort / git rebase --abort(放弃操作)一起理解,可以更完整地掌握冲突处理流程。