vscode源代码管理需手动git init初始化;修改不显示检查.gitignore和assume-unchanged状态;timeline可查单文件提交差异,commits查看全库历史;图标●/+/✕分别对应丢弃工作区、撤回暂存、仅撤暂存。

Git 未初始化就点源代码管理会没反应
VSCode 的源代码管理视图(Ctrl+Shift+G)不会自动帮你初始化仓库。如果打开一个空文件夹或普通项目,点击左侧 Git 图标后看到“暂无源代码管理提供程序”,不是插件坏了,而是 git init 根本没执行过。
解决方法很简单:打开集成终端(Ctrl+`),运行:
git init
之后 VSCode 就能识别 Git,并在状态栏右下角显示分支名(如 main)。注意:别在子目录里 init,否则只追踪该子目录,上级文件不会被纳入——务必在项目根目录操作。
修改文件后不显示在“更改”列表?检查 .gitignore 和文件权限
改完 index.js 却在源代码管理面板看不到它?常见原因有两个:
-
.gitignore里误写了index.js或匹配规则太宽(比如*.js而非dist/*.js) - 文件被标记为“assume unchanged”(比如执行过
git update-index --assume-unchanged index.js),此时 Git 会跳过检测改动
查是否被忽略:终端运行 git check-ignore -v index.js;查是否被 assume:运行 git ls-files -v | grep index.js,输出以 h 开头说明被忽略变更。
想看某次提交改了哪些行?用内置的“时间线”视图比命令行更直观
右键编辑器标签页 → “Open Timeline”,或者直接按 Ctrl+Shift+P 输入 “Timeline: Focus on Timeline View”。这里能列出当前文件所有 commit 记录,点任意一条就能展开 diff —— 不需要记 git show <hash>:path</hash>,也不用切到终端。
但要注意:Timeline 默认只显示该文件的提交。如果想查跨文件的逻辑变更(比如一次修复涉及 utils.js 和 api.ts),得去源代码管理面板顶部的“提交历史”(Commits)区域,那里是整个仓库的线性提交流。
撤销修改时,“放弃更改”和“从暂存区撤回”功能容易混淆
VSCode 源代码管理面板里,每个文件旁有三个小图标:
- 圆点(●)→ 未暂存修改:点它等同
git checkout -- file,丢弃工作区改动 - 加号(+)→ 已暂存:点它等同
git reset HEAD file,把文件从暂存区移出,但保留工作区修改 - 叉号(✕)→ 同时出现在两个区域?说明你既改了文件又
git add过,再点叉号只会撤销暂存,不会动工作区内容
最常踩的坑是:误点 ● 撤销了刚写的几十行代码,且没开 GitLens 或本地历史备份,就真没了。建议开启设置:"files.autoSave": "afterDelay" + "git.autofetch": true,至少让自动保存兜一道底。











