vs code 不自带 git,需系统安装并正确配置 git 路径;+ 按钮仅添加未跟踪文件;解决冲突时注意 current/incoming 语义而非位置;推送前须手动配置 remote。

VS Code 不自带 Git,所有操作都调用你系统里装的 git 可执行文件;只要终端能跑 git --version,VS Code 就能用——但必须让它找到这个命令,否则 SCM 视图压根不启动。
确认 VS Code 能正确调用系统 git
这是 90% “Git 不显示”“按钮灰掉”“状态栏没分支名”问题的根源。不是插件没开,是路径断了。
- 在终端执行
git --version,有输出(如git version 2.40.1)才说明已安装 - 打开 VS Code,按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Git: Show Git Output回车,看输出面板是否出现类似Using git 2.40.1 from /usr/bin/git的路径行 - 若提示
Git not found或路径为空:macOS 用户常见于 GUI 启动 VS Code 时未继承 shell 的PATH,需检查~/.zshrc(或对应 shell 配置)中是否含export PATH="/opt/homebrew/bin:$PATH"类语句,并重启 VS Code - 也可手动指定:设置中搜索
git.path,填入绝对路径,例如/usr/local/bin/git(macOS/Linux)或C:\Program Files\Git\bin\git.exe(Windows)
“+”按钮不是 git add -A,它只加未跟踪文件
点 SCM 面板顶部的 + 按钮,VS Code 实际执行的是 git add -f,但仅限「从未被 Git 跟踪过」的新文件——已修改、已删除、已忽略的文件,它一律无视。
- 你改了
package.json,又新建了utils/helper.js,点+后只有helper.js进暂存区,package.json仍灰着——这不是 bug,是设计如此 - 想暂存所有修改:右键文件 →
Stage Changes,或用命令面板运行Git: Stage All - 想让新文件 + 修改文件一起进暂存区,别依赖
+,直接用Git: Stage All更可靠 - 批量 stage 多个文件时,VS Code 会按字母序排序,但 Git 不关心顺序;如果你 commit message 想按逻辑分组(比如先 API 再 UI),建议先 stage 再写 message,别倒过来
解决合并冲突时,“Accept Current Change”和“Incoming Change”容易点反
VS Code 把当前分支内容默认放在右边,远端分支(如 origin/main)放在左边,但按钮文字“Current”“Incoming”是按语义定义的,不是按左右位置——这就导致视觉和文字错位。
- 顶部状态栏会明确标出
HEAD在哪(比如main),那个分支的内容就是“Current” -
Accept Current Change= 丢弃远端改动,只留你本地的;Accept Incoming Change= 丢弃你本地的,全用远端的 - 最安全做法:点
Accept Both Changes,再手动删掉不需要的部分,尤其涉及 JSON 字段增删、配置项开关时,自动接受容易漏掉关键差异 - 冲突编辑完必须按
Ctrl+S保存文件,VS Code 才认为你已解决;保存后还需点击 SCM 顶部的Merge Changes按钮(或右键分支 →Merge into Current Branch),才能完成最终提交
推送新分支前必须手动配 remote,VS Code 不自动帮你设 origin
点击“推送”按钮报错 fatal: No configured push destination,不是 VS Code 故障,是你还没告诉 Git 远程在哪。
- 首次推送前,必须在终端执行:
git remote add origin https://github.com/user/repo.git - 或者用命令面板运行
Git: Add Remote,填名称(如origin)和 URL - 推新分支时,VS Code 提供
Publish Branch(右键分支名或 SCM 顶部 … 菜单),它等价于git push -u origin branch-name;不点这个,直接点 Push 会失败 - 如果看到
Your local changes would be overwritten by checkout,说明有未提交修改;想保留就先Stage+Commit或Stash Changes,想丢弃就右键 →Discard Changes
Git 集成再方便,也绕不开几个硬前提:工作区必须是仓库根目录(含 .git 文件夹)、git 命令必须可执行、remote 必须手动配好。这些地方一卡,图形界面就变“黑盒”,与其反复点按钮,不如先看一眼终端里的 git status 输出——它永远比 UI 更诚实。











