Sublime Text 里快速定位 Git 冲突块需用 Ctrl+Shift+F(Win/Linux)或 Cmd+Shift+F(macOS)打开搜索面板,输入正则 <<<<<<<.*?======.*?>>>>>> 并勾选 Regular Expression 和 Whole Word,结果点击即可跳转;嵌套冲突需手动二次检查,大文件建议先用 git status --short 筛选 UU 文件再搜索。

Sublime Text 里怎么快速定位 Git 冲突块
Sublime Text 本身不解析 Git 冲突语义,但能靠文本搜索高效定位所有冲突标记。关键不是“自动识别”,而是用 Find All 精准抓取原始冲突边界。
- 用
Ctrl+Shift+F(Win/Linux)或Cmd+Shift+F(macOS)打开全局搜索面板 - 输入正则表达式:
<<<<<<.*?======.*?>>>>>>,勾选Regular Expression和Whole Word - 结果列表会列出每个冲突块起始行,点击即可跳转;注意:嵌套冲突(如冲突块里又含冲突标记)需手动二次检查
- 若搜索卡顿,先在终端运行
git status --short,只对输出中带UU的文件执行搜索
为什么不能直接删 <<<<<< / ======= / >>>>>> 标记
手动删除三段标记线看似简单,但极易出错——Git 不靠“有没有标记”判断是否解决,而靠 git add 是否将清理后的文件暂存。漏删一行、多空一行、缩进错位,都会导致 git commit 失败并报 both modified。
- 正确做法:整段选中冲突块(含所有四行标记 + 中间内容),再用
Ctrl+Shift+P→ 输入Insert Snippet→ 选Keep Current或Keep Incoming模板,自动替换为干净内容 - 别用普通替换:比如用
^<<<<<<.*$\n^=======.*$\n^>>>>>>.*$\n三步删,容易匹配错行或遗漏中间空行 - 大文件慎用全量正则替换,可能误删注释里相似字符串(如文档中写 “
Diffy 插件能帮你看出哪边改了什么,但不能解决冲突
Diffy 是轻量级行对比工具,适合快速比对两个已清理版本的差异,但它完全不理解 Git 的三方合并逻辑,也不接收 $BASE/$LOCAL/$REMOTE 参数。
- 典型误用:右键标签页选
Diffy: Compare with Tab,然后对着两栏手动抄写——这等于放弃 Git 的合并上下文,容易丢掉 base 版本的关键逻辑 - 它不显示祖先版本(
$BASE),无法判断某行是 A 改了还是 B 改了,更无法处理双方都修改同一行的真冲突 - 仅适用场景:确认某次 rebase 后两个分支的最终输出是否一致,或验证自己手动清理后的结果是否与预期相符
真正解决冲突必须用 Sublime Merge,且配置缺一不可
Sublime Text 的任何插件都无法替代 Sublime Merge 的三方视图能力。它不是插件,是独立应用,且 Git 调用时对配置极其敏感。
- 验证是否装对:终端运行
smerge --version有输出,且git mergetool能弹出四栏界面(ancestor/local/remote/merged)才算通 - 三行配置必须全执行:
git config --global merge.tool sublime_merge、git config --global mergetool.sublime_merge.cmd '...'(路径含空格要转义)、git config --global mergetool.trustPrompt false - 操作时别在中间
Merged区手动编辑——点两侧Local/Remote块上方的小三角图标才是“接受整块”,否则 Git 不认为该冲突已解决 - 保存必须点右上角
Save按钮,Cmd+S不触发 Git 的状态同步
最常被忽略的是 trustPrompt false 这一步,漏掉就会卡在 Hit return to start merge tool 无响应;还有人把 sublime_merge 误配成 smerge,导致 git mergetool 找不到工具。


















