普通 git add 不会添加被 .gitignore 匹配的文件,即使未追踪;必须用 git add -f 强制加入,VSCode 的“Stage Changes”同样受此限制,且不提示忽略原因。

直接用 git add -f,不是 git add 默认行为
为什么普通 git add 加不进去?
VSCode 的源码管理面板里点“+”或右键“Stage Changes”,本质还是调 git add。但 Git 默认会跳过被 .gitignore 匹配的文件——哪怕它根本没被追踪过。
常见错误现象:git status 显示 Untracked files,但 VSCode 里找不到它,或者点了“Stage”没反应;终端执行 git add filename 报错 The following paths are ignored by one of your .gitignore files。
- 这是 Git 的保护机制,不是 VSCode 的 bug
- 即使文件从未 commit 过、甚至仓库刚 init,只要匹配
.gitignore,就进不了暂存区 - VSCode 不会自动弹窗提醒你“这个被 ignore 了”,它只是静默跳过
怎么强制加:终端里跑 git add -f
VSCode 自带集成终端(Ctrl+`),在项目根目录下执行即可:
git add -f path/to/ignored-file.log
参数差异很关键:
-
git add filename→ 尊重.gitignore,失败时无提示 -
git add -f filename→ 强制加入,无视所有 ignore 规则 -
git add -f .→ 强制添加当前目录下所有未追踪文件(慎用)
加完后 git status 就能看到它出现在 Changes to be committed 里,VSCode 源码管理面板也会同步显示。
VSCode 里能不能不切终端?
不能直接点选强制添加,但有折中路径:
- 右键文件 → “Reveal in Explorer” → 在系统文件管理器里复制完整路径,粘贴到终端执行
git add -f - 装插件
GitLens后,右键文件可看到 “Add (force)” 选项(本质仍是调git add -f) - 别依赖“Source Control”面板里的“+”,它没提供 force 开关
注意:如果文件被 .git/info/exclude 或全局 ~/.gitconfig ignore,-f 同样生效;但若路径含空格或特殊字符,务必用引号包裹 git add -f "file name.log"。
真正容易被忽略的是:加进去之后,下次 git commit 会把它一起提交——而很多人其实只想临时调试、并不真想进历史。这时候得立刻 git reset HEAD -- filename,否则就真进去了。


















