gitgutter图标不显示需同时满足三个前提:系统可调用git命令、文件位于.git目录所在仓库内、sublime以项目方式打开(file→open folder);缺一即失效。

GitGutter图标不显示?先查这三个硬性前提
GitGutter 不是“装完就亮”,它必须同时满足三个条件才能工作:系统能调用 git 命令、当前文件在 Git 仓库内(即路径下有 .git 目录)、Sublime 是以项目方式打开的(不是双击单个文件)。缺一不可,少一个图标就全黑。
- 终端里运行
git --version要有输出;没反应就说明 Sublime 找不到git—— 它不继承 shell 的PATH,得手动配git_binary - 在 Sublime 中必须用 File → Open Folder… 打开含
.git的根目录,侧边栏要能看到整个项目结构;只打开src/main.py,插件压根不知道你在哪个仓库里 - 新创建的文件(比如
utils.py)默认是 untracked 状态,GitGutter 不会标 +,得先执行git add utils.py再保存,才会出现蓝色加号
图标颜色和符号对不上?其实是主题或字体惹的祸
你看到的不是“绿色竖线”或“红色减号”,而是灰块、错位小方块,甚至完全空白——这大概率不是插件坏了,而是 Sublime 主题或字体不兼容 GitGutter 的 gutter 渲染机制。
- 换回默认主题:Preferences → Theme → Default.sublime-theme,立刻验证是否恢复;若恢复正常,说明你当前主题没定义
markup.inserted.git_gutter这类作用域样式 - 别用非等宽字体(比如系统默认的 PingFang 或微软雅黑),GitGutter 依赖 Unicode 块元素(如
▌)画标记;设为Fira Code或Consolas可解 - 禁用其他 gutter 插件(如
BracketHighlighter、SublimeLinter),它们可能抢占 gutter 区域导致重叠或覆盖
怎么让未跟踪文件也显示标记?别改设置,先理解它的设计逻辑
GitGutter 默认不标未跟踪文件(untracked),这不是缺陷,而是严格遵循 Git 的三棵树模型:它比对的是 working tree ↔ index,而新文件还没进 index,自然不参与 diff。
- 想让新增文件也显示 +?可以加配置
"show_untracked": true,但它只是把未跟踪文件整行高亮(灰色背景),**不会在 gutter 里画 + 符号**——这是 GitGutter 的限制,不是 bug - 真正要看到 +/−/~ 图标,必须走 Git 标准流程:
git add(进 index)→ 修改 → 保存 → 显示 ~;git rm→ 显示 −;否则它永远“看不见”这些文件 - 别指望靠
"show_in_minimap": true把未跟踪状态塞进缩略图——minimap 只渲染已知变更行,不扩展语义
为什么改了设置不生效?重启不是万能,但重载很关键
修改 GitGutter.sublime-settings 后图标还是老样子,不是配置写错了,而是 Sublime 没重载插件上下文。尤其 git_binary 这种底层路径,只在启动时读一次。
-
git_binary改完必须重启 Sublime,否则它继续用旧路径找git,控制台里会刷GitGutter: git not found - 其他设置(如
"live_mode"、"highlight_gutter_lines")改完保存即可生效,插件会自动重载,不用重启 - 如果不确定是否生效,按
Ctrl+`打开控制台,删掉所有日志后操作一次保存,看有没有GitGutter: updated或报错信息
git status --porcelain -z 和 git diff --cached -z,解析输出定位行号。它不碰工作区脏数据,也不管远程分支,只忠于 index 和 HEAD。理解这点,很多“为什么没标”“为什么标错了”的问题,其实早就有答案。










