vs code 文件名变红表示 git 认为该文件已被删除但未提交,对应 git status 中的 deleted 状态;需通过 git add -u、git rm 或 git restore --staged 等命令同步状态,而非依赖编辑器操作或修改颜色设置。

VS Code 文件名变红,基本等于 Git 认为这个文件被删了但没提交——不是编辑器 bug,是版本控制在报警。
Git 状态显示为 deleted 但文件还在磁盘上
你右键删除了一个已跟踪的文件(比如 utils.js),或者用命令行执行了 git rm utils.js,但没运行 git commit。这时 Git 把它记作“待删除”,VS Code 的文件资源管理器就用红色标出文件名。
- 检查方法:终端里运行
git status,会看到类似deleted: utils.js的输出 - 如果文件其实没真删(比如只是误拖进回收站又拖回来了),Git 还是认它“已删”,红色不会自动消失
- 别直接在 VS Code 里右键 → “还原更改”,那会把文件内容重置成上次提交的版本,不是恢复删除状态
文件被删了但没 git add -u 或 git rm
你手动用系统命令删了文件(比如 rm config.json),Git 没被通知,它仍认为这文件该存在。此时 git status 显示 deleted: config.json,VS Code 同样标红。
- 正确做法是补上
git add -u(批量标记所有已删/修改文件)或git rm config.json - 如果想撤销这次删除(即让 Git 忘掉“删了它”这事),用
git restore --staged config.json(Git 2.23+)或git reset HEAD config.json(旧版) - 注意:
git restore config.json是把文件内容从暂存区拷回工作区——如果文件已被物理删除,这步会失败,得先git checkout -- config.json
VS Code 插件或设置干扰颜色显示
极少数情况是 GitLens、Project Manager 等插件覆盖了默认颜色逻辑,或用户设置了自定义 workbench.colorCustomizations。
- 临时验证:用
code --disable-extensions启动 VS Code,看红色是否消失 - 查配置:搜索设置里的
git.decorations,确认git.decorations.enabled是true,且没被其他规则覆盖 - 颜色本身由
gitDecoration.deletedResourceForeground控制,改它只影响外观,不解决底层状态问题
真正要盯住的永远是 git status 输出——红色只是它的视觉翻译。很多人卡在“文件明明还在,为啥标红”,其实是忘了 Git 状态和文件物理存在是两层事。










