Sublime Merge 是独立 Git GUI 工具,需单独安装并配置路径;右键菜单支持靠 sublimerge 插件实现,Git 命令行调用需正确设置 mergetool.cmd 与 --wait 参数,且其配置与 Sublime Text 完全无关。

Sublime Merge 不是 Sublime Text 的插件,而是官方出品的独立 Git GUI 工具,它和 Sublime Text 共享快捷键逻辑与 UI 风格,但必须单独安装、手动配置路径、显式调用才能联动。直接双击打开或右键菜单里找不到“Open in Sublime Merge”?大概率是路径没配对,或者 Git 命令行工具未正确注册。
怎么让 Sublime Text 右键菜单出现 Sublime Merge 选项
靠的是 sublimerge 插件(注意拼写,不是 sublime_merge),不是官方 SublimeMerge 应用本身。这个插件只负责在右键菜单注入入口,背后仍需指向正确的可执行文件。
- 用
Ctrl+Shift+P调出命令面板,输入Install Package,搜索并安装sublimerge - 安装后,打开
Preferences → Settings,在用户设置中添加一行(注意逗号):"sublime_merge_path": "/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge"(macOS)
或"sublime_merge_path": "C:\Program Files\Sublime Merge\sublime_merge.exe"(Windows) - 路径必须是
smerge或sublime_merge.exe的**绝对路径**,不能是快捷方式或别名;如果路径含空格,Windows 下要用双反斜杠\或正斜杠/避免解析失败 - 改完保存,重启 Sublime Text,再右键项目根目录或任意文件,就能看到
SublimeMerge: Open Repository或Open File in Sublime Merge
为什么 git mergetool 启动的是空白窗口或报错 command not found
因为 Git 找不到 smerge 命令——它不依赖 Sublime Text 设置,而依赖系统 PATH 或你显式配置的 cmd 字段。
- 先在终端运行
which smerge(macOS/Linux)或where smerge(Windows),确认命令是否可用;若无输出,说明安装时没勾选「Add to PATH」,得手动加或改配置 - 执行
git config --global mergetool.sublime_merge.cmd时,务必用完整路径包裹参数,例如:'"/Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge" "merge" "$LOCAL" "$REMOTE" "$BASE" "$MERGED" --wait' - 不要漏掉
--wait,否则 Git 会认为工具已退出,跳过等待合并完成,导致冲突标记残留 - 如果用的是
subl --wait "$MERGED"这种写法,那启动的是 Sublime Text,不是 Sublime Merge,属于配置错对象
Sublime Merge 里改完文件,怎么让 Sublime Text 实时刷新
Sublime Text 不监听文件系统变更,默认不会自动重载。改完保存后,得手动触发刷新,否则看到的是旧内容。
- 在 Sublime Merge 中完成编辑并保存后,回到 Sublime Text,按
Ctrl+R(Windows/Linux)或Cmd+R(macOS)重新加载当前文件 - 更省事的做法:在 Sublime Merge 中右键文件 →
Open in Sublime Text,此时打开的是新实例;关掉这个实例后,原 Sublime Text 窗口里的文件仍保持原样,不会同步 - 没有后台自动同步机制。想避免反复切换,建议把 Sublime Merge 当作只读对比工具,真正编辑仍留在 Sublime Text 内,用
GitGutter插件看差异,仅在冲突复杂时跳转过去
对比 diff 和 merge 场景下,该用哪个命令入口
别混用 diff.tool 和 merge.tool 的配置项,它们调用的子命令不同,传参结构也不同,错配会导致界面异常或闪退。
-
git difftool对应的是smerge "diff" "$LOCAL" "$REMOTE",只传两个文件路径,展示双栏对比 -
git mergetool对应的是smerge "merge" "$LOCAL" "$REMOTE" "$BASE" "$MERGED",四个参数缺一不可,用于三路合并(base 是共同祖先,merged 是当前冲突文件) - 如果只想快速看某次 commit 的变更,用 Sublime Merge 自带的
Repository → Compare Commits更直接,不用走 Git 配置 - Sublime Text 侧边栏的
GitGutter显示的是工作区 vs 暂存区差异,和 Sublime Merge 的 HEAD vs 工作区视角可能不一致,别拿它当权威比对依据
最常被忽略的一点:Sublime Merge 的配置完全独立于 Sublime Text,哪怕你删了 Sublime Text 的所有插件,只要 Git 的 mergetool 配置正确且 smerge 命令可达,git mergetool 就能照常工作——它根本不需要 Sublime Text 在场。

















