vs code 依赖系统 git 可执行文件,而非自带或插件;需通过终端验证 git --version、设置 git.path 绝对路径并重启生效,否则 scm 视图灰显、分支不显示。

VS Code 本身不带 Git,所谓“Git 插件”其实是它对系统已安装 git 的调用集成——配置错路径、没装对可执行文件、或环境变量没继承,都会导致 SCM 视图灰掉、按钮不可点、右下角不显示分支名。核心问题从来不是“装插件”,而是让 VS Code 找到并信任那个 git。
确认 VS Code 能真正调用系统 git
这是所有操作的前提,90% 的“Git 不工作”卡在这一步。
- 在 VS Code 内置终端(
Ctrl + `)中运行git --version,必须有输出(如git version 2.40.1);若报command not found,说明终端 PATH 没生效,需检查 shell 配置(如~/.zshrc或~/.bash_profile)是否导出正确路径 - 按
Ctrl + Shift + P输入Git: Show Git Output,查看输出面板里是否出现类似Using git 2.40.1 from /usr/bin/git的行;若显示Git not found或路径为空,VS Code 就没连上 - Windows 用户特别注意:
git.exe要选C:\Program Files\Git\bin\git.exe,不是cmd\git.exe—— 后者缺 SSH 支持,推送到 Gitee/GitHub 时会卡在认证环节
手动配置 git.path 是最稳的兜底方式
哪怕终端里 git 正常,VS Code GUI 启动时也可能拿不到 PATH(尤其是 macOS/Linux 的 GUI 应用)。直接指定路径一劳永逸。
- 打开设置(
Ctrl + ,),搜索git.path - 点击
Edit in settings.json,填入绝对路径,例如:"git.path": "/opt/homebrew/bin/git"
(macOS Homebrew)"git.path": "C:/Program Files/Git/bin/git.exe"
(Windows,注意用正斜杠或双反斜杠) - 保存后**必须完全退出 VS Code(关闭所有窗口)再重开**,热重载不生效
日常提交/暂存别只靠左侧面板的 “+” 按钮
那个 “+” 图标不是 git add -A,它只加「从未被跟踪过的文件」,改了的、删了的、重命名的文件它统统忽略——这不是 bug,是设计行为。
- 想暂存所有修改:右键某个已修改文件 →
Stage Changes,或用命令面板(Ctrl + Shift + P)运行Git: Stage All - 想丢弃某段修改而非整个文件:在 SCM 视图中点开文件,hover 到改动行右侧,出现
⋯→Revert Selected Ranges - 提交时输入框支持多行,
Ctrl + Enter提交;勾选设置里的git.alwaysSignOff可自动加Signed-off-by
处理合并冲突时,“Accept” 按钮语义和视觉位置是反的
VS Code 把远端变更(Incoming)默认放在左边,本地变更(Current)放在右边,但按钮文字“Accept Current Change”却在右边——容易点错,一不留神就把自己的代码全丢了。
- 先看右下角状态栏:显示
main就代表当前分支是main,它的内容就是 “Current” -
Accept Current Change= 保留你本地的,丢掉远端的;Accept Incoming Change= 丢掉你本地的,全用远端的 - 最安全策略:先点
Accept Both Changes,再手动删掉重复或冲突的 JSON 字段、import 行等,尤其涉及配置增删时 - 所有冲突块解决完后,必须点编辑器顶部的
✓ 完成合并,否则git status仍报未合并,也无法提交
Git 在 VS Code 里没有“插件开关”这回事,它的稳定性和功能边界,完全取决于你给它配的那个 git 可执行文件是否干净、路径是否锁死、SSH 密钥是否就位——别在界面里找答案,去终端和 settings.json 里盯住那几行真实配置。











