- 已经会基本提交和分支操作的开发者
- 想理解命令边界与风险的人
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 提供了更直观的三路合并界面。
图例理解
冲突文件(工作区)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(放弃操作)一起理解,可以更完整地掌握冲突处理流程。