sublime merge是独立于sublime text的图形化git客户端,需单独下载安装并正确配置git mergetool;验证用smerge --version,配置含merge.tool、mergetool.sublime_merge.cmd和trustprompt false三步,路径与信任开关缺一不可。

Sublime Text 本身不是 Git 客户端,也不能直接当 mergetool 用;真正能图形化处理 Git 冲突、diff、提交流程的,是独立软件 Sublime Merge。装错、配错、或误以为 Sublime Text 插件能替代它,是绝大多数人卡住的根源。
怎么确认你装的是 Sublime Merge 而不是 Sublime Text 插件?
很多人搜“sublimerge”插件并安装,结果右键只有“Compare with Tab”——那是对比插件 Diffy 或 Compare Files,不是三方合并工具。Sublime Merge 是单独下载安装的桌面应用,官网地址是 https://www.sublimemerge.com/download。
- Windows 下安装后,默认可执行文件是
sublime_merge.exe,路径类似C:Program FilesSublime Mergesublime_merge.exe - macOS 安装后,命令行可用
smerge或subl(取决于是否勾选“Install Command Line Tool”) - Linux 用户需手动解压并添加
bin/smerge到$PATH,否则git mergetool会报command not found - 验证方式:终端运行
smerge --version或which smerge,有输出才算装对
Git 配置 mergetool 为什么总失败?关键三步不能漏
配置不生效,90% 出在路径、命令格式、信任开关这三处。别跳步骤,尤其别跳最后一条。
- 先设工具名:
git config --global merge.tool sublime_merge(注意不是smerge,除非你显式注册了smerge工具) - 再配调用命令:macOS 推荐用完整路径避免歧义:
git config --global mergetool.sublime_merge.cmd '/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge "merge" "$LOCAL" "$REMOTE" "$BASE" "$MERGED" --wait' - 必须关掉信任提示:
git config --global mergetool.trustPrompt false—— 不加这句,每次git mergetool都会卡在 “Hit return to start merge tool” 提示,按回车也不动 - 如果仍报错,检查
$BASE是否为空(rebase 场景下可能没有共同祖先),此时 Sublime Merge 会闪退,换用git mergetool --no-prompt可绕过
打开 Sublime Merge 后,冲突块点不动?看这四个位置
界面分四栏,但新手常只盯着中间“Merged”区编辑,忽略真正起效的操作入口:
- 左边(
Local)和右边(Remote)每段差异上方都有小三角图标 → 点它才是“接受这一整块”,不是双击或拖选 - 中间预览区支持自由编辑,但保存前必须确保所有冲突标记(
类)已被清除,否则 Git 不认作已解决 - 顶部菜单
View → Show Inline Diffs必开 —— 否则只标整行,看不出foo(1)和foo(2)的字符级差异 - 底部状态栏显示 “X conflicts remaining”,数字归零且无红色波浪线才代表真正完成,别只看保存就关窗口
Sublime Text 标签页里能不能直接开 Sublime Merge?可以,但要路径对
有人想在 Sublime Text 里右键仓库目录 → Open Git Repository,结果报错“Can’t find Sublime Merge”。这不是插件问题,是路径没写进配置。
- 打开 Sublime Text 的
Preferences → Settings - 在用户设置里加一行:
"sublime_merge_path": "C:\Program Files\Sublime Merge\sublime_merge.exe"(Windows 反斜杠要双写) - macOS/Linux 不需要这步,只要
smerge在$PATH里即可 - 改完保存,重启 Sublime Text,再右键项目根目录,就能看到 “Open in Sublime Merge” 选项
最易被忽略的是:Sublime Merge 的合并逻辑依赖 Git 的 index 状态,不是所有“看起来像冲突”的文件都能被它识别 —— 如果 git status 没显示 conflict,git mergetool 就不会启动它。别试图强行打开未被 Git 标记的文件做合并。











