atom自带git-diff包默认启用,但行号旁标记不显示主因是ui主题或css覆盖(如opacity:0)、插件冲突、文件未被git跟踪,或.git不在项目根目录;启用“compare against head instead of index”可始终显示原始差异。

git-diff 包默认启用,但行号旁标记可能不显示
Atom 自带 git-diff 包,只要项目根目录下有 .git 文件夹,它就会自动对比工作区与 HEAD 的差异,并在行号左侧 gutter 区域渲染添加(绿色)、修改(蓝色)、删除(红色)标记。但很多人看不到这些标记,不是插件没开,而是被 UI 主题或 CSS 覆盖了。
常见原因包括:
- 当前 UI Theme(如
atom-material-ui)把 gutter 图标设为opacity: 0或display: none - 安装了冲突的插件,比如
minimap-git-diff或旧版git-plus的样式劫持了 gutter 渲染 - 文件未被 Git 跟踪(untracked),此时只有“未跟踪”图标(灰色问号),无 diff 标记
验证方法:临时切换到 one-dark-ui + one-dark-syntax 主题组合,重启 Atom,再打开已暂存/已修改的文件——标记通常立刻出现。
如何开关或微调 gutter 标记的显隐和颜色
gutter 标记本身不可拖动、不可重定位,但可通过配置控制是否显示、用什么颜色。核心配置项在 git-diff 包的 Settings 页面(Packages → git-diff → Settings):
-
Show added lines、Show modified lines、Show deleted lines:分别控制三类标记是否渲染 -
Use soft wrap不影响 gutter,别误点 - 颜色无法直接在 UI 中改,但可在
styles.less里覆盖(不推荐除非必要)
如果你只想隐藏某类标记(比如不关心新增行),关掉对应开关即可;想恢复全部,勾选全部三项,保存后无需重启,编辑器会实时刷新 gutter。
为什么 stage 后标记消失?这是正常行为
当你执行 git add 把修改加入暂存区后,git-diff 默认只对比工作区与暂存区(index),而暂存区内容与 HEAD 一致,所以 gutter 标记会消失——这不是 bug,是设计逻辑。
若你想始终看到“相对于 HEAD”的差异(即忽略暂存状态),需手动启用 git-diff 的高级选项:
- 打开
Packages → git-diff → Settings - 勾选
Compare against HEAD instead of index - 该选项生效后,即使已
git add,gutter 仍显示原始变更位置
注意:开启此项后,Atom 不再反映“暂存/未暂存”的真实状态,对日常提交流程可能造成认知干扰,建议仅在代码审查等特定场景使用。
标记不更新?检查 .git 所在路径和文件编码
有时你改了文件,gutter 却没反应,连“已修改”图标都不出现。优先排查两个硬性条件:
-
.git目录必须在 Atom 项目的**最外层根目录**。如果 Atom 打开的是子文件夹(比如只打开了src/),即使该路径下有.git,git-diff也识别不到 - 文件编码不是
UTF-8(比如是GBK或ISO-8859-1)时,Git 内部 diff 可能失败,导致标记不生成。在Settings → Core中确认Default Encoding设为UTF-8
另外,Atom 不监控符号链接(symlink)指向的仓库,也不支持嵌套 Git 仓库(submodule)的跨仓库 diff 标记——这些属于明确限制,不是配置问题。











