必须手动将目标文件点击“+”加入STAGED CHANGES区域,未暂存的文件不会参与提交;误加可用“-”撤回,全局“+”会暂存全部改动,需避免。

怎么只暂存几个文件,不提交全部修改?
VSCode 的 Git 面板默认把所有未提交的改动都列在 Changes 区域,但真正决定“哪些会进本次 commit”的,是 Staged Changes 区域。你必须手动把想提交的文件挪过去,否则它们不会出现在 commit 里。
- 点击某个文件名右侧的
+图标,把它加入暂存区;按住Ctrl(Windows/Linux)或Cmd(Mac)可多选再批量点+ - 误加了?在
Staged Changes里找到该文件,点它右边的-就能撤回 - 右键文件 →
Stage Selected Ranges可以只暂存某几行(比如改了 10 行,只提交其中 3 行),但注意:这需要文件已开启 Git diff 高亮,且不能跨函数块乱选 - 别直接点
Changes上方那个全局+,它会把所有改动一股脑暂存——这是新手最常踩的坑
为什么点了 ✓ 却没反应,或者提示 “No staged changes”?
因为 VSCode 的 commit 操作只作用于 Staged Changes,不是 Changes。如果你没点过任何 +,或者点完又误点了 -,就会触发这个提示。
- 检查左下角状态栏:如果显示
Git: No staged changes,说明暂存区为空 - 确认是否在正确的工作目录:VSCode 打开的文件夹必须是 Git 仓库根目录(即包含
.git文件夹),否则源代码管理面板压根不会加载变更 - 某些插件(如 Prettier、ESLint 自动保存格式化)可能在你暂存前悄悄改了文件,导致 Git 认为“这文件又脏了”,建议关掉保存时自动格式化,或把格式化命令绑定到 commit hook
commit 后 push 不上去,报错 “rejected — non-fast-forward” 或 “403” 怎么办?
提交(commit)只是本地操作,push 才真正发到远程。这两个动作分离,也意味着中间可能有别人先推了新提交。
|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件
- push 前务必先
pull:点击源代码管理面板右上角三个点 →Pull,或快捷键Ctrl+Shift+P→ 输入Git: Pull - 如果 pull 后出现冲突,VSCode 会打开合并编辑器,**必须手动解决冲突并再次 stage 修改后的文件**,才能继续 push
-
403错误大概率是凭证问题:检查.git/config里的url是否含中文用户名,或是否用了 HTTPS 方式但没配 Personal Access Token(GitHub 已停用密码登录);推荐改用 SSH 或配置 PAT
想跳过暂存步骤,直接 commit 某个文件?
可以,但要换方式:VSCode 不支持图形界面下跳过 staging 直接 commit,不过终端命令能绕过。
- 在 VSCode 内置终端执行:
git add path/to/file.js && git commit -m "fix: update handler" - 注意路径是相对于仓库根目录的,不是当前打开的文件夹;可以用 VSCode 右键文件 →
Copy Relative Path快速获取 - 这种写法适合 CI/CD 脚本或批量操作,日常开发仍建议用 GUI 暂存,避免漏掉关联改动(比如改了
utils.js,却忘了同步更新调用它的index.test.js)
真正的难点不在怎么点按钮,而在于每次提交前得判断:这个改动是否自洽、有没有漏测、message 是否能让三个月后的自己一眼看懂。工具只是载体,意识才是分水岭。










