VSCode SCM面板默认隐藏untracked文件是因git.untrackedChanges默认值为"hidden",改为"separate"可显示独立区块;若仍不可见,需排查.gitignore匹配、非仓库根目录、文件监视未刷新或core.ignoreLimit超限。

VSCode SCM 面板默认隐藏 untracked 文件是设计使然
不是配置错了,也不是插件冲突——VSCode 的源代码管理(SCM)面板默认把未跟踪(untracked)文件设为不可见,配置项 git.untrackedChanges 的默认值就是 "hidden"。这和命令行 git status 显示所有 untracked 文件的行为不同,VSCode 选择收敛 UI,避免临时文件、构建产物干扰提交流程。
让未追踪文件出现在 SCM 面板只需改一个设置
打开 VS Code 设置(Ctrl+, 或 Cmd+,),搜索 git.untrackedChanges,把它从 hidden 改成:
-
separate:在 SCM 面板底部新增独立的 “Untracked” 区块,最推荐,语义清晰 -
mixed:把 untracked 文件混进 “Changes” 列表,和已修改文件并列,容易混淆
对应 JSON 配置为:"git.untrackedChanges": "separate"。改完立即生效,无需重启。
为什么改了还是看不到?常见卡点
即使设置了 separate,以下情况仍会导致 untracked 文件不出现:
- 文件已被
.gitignore匹配(比如新写的app.log匹配了**/*.log)——Git 根本不报告它,VSCode 无从显示 - VS Code 当前打开的不是 Git 仓库根目录(左下角没显示分支名)——检查是否误开了子文件夹
- 文件刚创建,VS Code 文件监视器尚未触发刷新(极少见,可执行
Developer: Restart Language Server强制重载) - 项目启用了
core.ignoreLimit限制,且 untracked 文件数量超限(可通过git config --get core.ignoreLimit查看)
注意:files.exclude 和 .gitignore 完全无关
很多人误以为在 files.exclude 里加 "**/*.log": true 就能“隐藏 SCM 中的未跟踪日志”,这是典型误解:
-
files.exclude只影响资源管理器(左侧文件树)和Ctrl+P,对 Git 状态零影响 - SCM 面板显示内容完全由 Git 命令(如
git status --porcelain)决定,VS Code 只是渲染结果 - 想让某个文件彻底不出现在 SCM 面板,唯一办法是让它被
.gitignore拦住,或从未进入工作区
真正要隐藏的是 Git 的感知能力,而不是 VS Code 的 UI 渲染——这点最容易被绕晕。


















