需在工作区settings.json中显式设{"files.exclude":{"**/.git":false}},因VS Code默认规则优先级高;.gitignore与此无关,files.exclude才控制侧边栏显示。

为什么改了files.exclude但.git还是不显示?
因为 VS Code 默认就把它藏了——不是你漏配,是它出厂自带规则。打开用户或工作区的 settings.json,搜 files.exclude,大概率会看到类似 "**/.git": true 这条配置,它来自默认设置,优先级高且生效中。
想让 .git 出现在侧边栏,最直接的办法是显式覆盖:在当前工作区的 .vscode/settings.json 里加这一行:
{"files.exclude": {"**/.git": false}}
注意:false 是关键,不是删掉那条、也不是留空。VS Code 的排除逻辑是“匹配即隐藏”,设为 false 才表示“不参与排除”。
-
"**/.git": true→ 隐藏所有层级的.git(包括子模块) -
".git": true→ 只隐藏根目录下的.git,子模块里的仍可见 -
"**/.git": false→ 显式解除隐藏,强制显示(哪怕上级有true规则)
files.exclude 和 Git 插件显示逻辑冲突怎么办?
即使 .git 已在资源管理器中显示,Git 扩展(比如官方 Git 插件)仍可能在“源代码管理”视图里折叠或弱化它——这不是配置失效,是插件自己的 UI 行为。它读的是 Git 仓库状态,不是文件系统可见性。
验证是否真生效,别只看左侧文件树:
- 在终端里执行
ls -la,确认.git目录物理存在 - 右键点击项目根目录 → “在访达/文件资源管理器中打开”,看系统级是否可见(macOS/Windows 需单独开启“显示隐藏文件”)
- 关掉所有扩展(尤其是 GitLens、Git Graph),再开 VS Code,只保留基础 Git 支持,观察侧边栏
如果关扩展后 .git 出来了,说明某个插件主动扫描并渲染了它,和 files.exclude 无关。
|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件
工作区配置 vs 用户配置:哪个该动?
改 files.exclude 显示 .git,强烈建议只动工作区配置(即项目根目录下 .vscode/settings.json),而不是全局用户设置。
原因很实际:
- 团队协作时,别人拉你的代码,
.vscode/settings.json会被一起检出,.git显示行为可同步 - 你同时开多个项目,有的要调试 Git 内部结构(如写 pre-commit hook),有的纯前端开发不想被干扰——工作区配置能按需切换
- 用户级设置一旦写错(比如误加
"**": true),整个侧边栏变空,排查成本高
别碰 $HOME/Library/Application Support/Code/User/settings.json(macOS)这类路径,除非你明确要所有项目都显示 .git。
顺带一提:.gitignore 不影响侧边栏显示
有人以为把 .git 从 .gitignore 里删掉就能让它出现——没用。.gitignore 只控制 Git 是否追踪文件,和 VS Code 的文件树渲染完全无关。
真正管侧边栏的是 files.exclude;管搜索框(Ctrl+Shift+F)的是 search.exclude;.gitignore 只影响 Git 状态面板和 git status 输出。
如果你发现 .git 显示了,但 Git 面板里一堆未追踪文件,那大概率是 .git 目录本身损坏或没初始化完成,跟隐藏配置无关。

















