vs code本身不管理分支,仅调用本地git命令;点击状态栏分支名执行git checkout(或git switch),未提交修改时禁止切换,合并使用git merge并内置三栏冲突编辑器,需手动暂存后提交,且必须在仓库根目录下启用git功能。

VS Code 本身不管理分支,它只是调用你本地 Git 的能力;所有“可视化操作”背后仍是标准 Git 命令在执行。只要 git --version ≥ 2.5,且 VS Code 已正确识别 Git 路径(设置里检查 git.path),就能直接用——不需要插件、不依赖网络、不额外配置。
点底部状态栏切换分支,本质是执行 git checkout
VS Code 底部状态栏显示当前分支名,点击后弹出的列表来自 git branch -a 输出。选中某分支即触发 git checkout <branch></branch>(或 git switch <branch></branch>,取决于 Git 版本和配置)。
- 如果当前有未提交修改,且目标分支存在同名文件但内容不同,VS Code 会直接拒绝切换,并提示“无法切换:存在未暂存的更改”
- 想强制覆盖切换?不行。VS Code 不提供
git checkout -f选项,这是刻意设计——防止误丢代码 - 切换后编辑器里打开的文件不会自动重载,需手动保存或触发文件刷新(
Ctrl+R或右键文件 → “Reopen Editor”)
右键分支名“Merge into Current Branch”,实际运行 git merge
在源代码管理视图或 Git Graph 插件中右键某分支选择合并,VS Code 调用的是 git merge <source-branch></source-branch>,不是 git rebase,也不是 git pull --rebase。
使用四维度框架评估任意 GitLab MR 或 GitHub PR 的复杂度:规模(20%),认知负荷(30%),审查工作量(30%),风险/影响(20%)...
- 若发生冲突,VS Code 自动启用内置
Merge Editor,三栏对比(CURRENT / INCOMING / RESULT),标记为和 <code>>>>>> feature/x的部分必须手动编辑清理 - 冲突解决后,必须先
Stage Changes(右键文件 → “Stage Changes” 或点击源代码管理面板里的 + 号),再点击“✓ Commit”按钮完成提交;漏掉暂存这步,提交按钮是灰色不可点的 - 合并成功后,
git log --oneline --graph --all --decorate在集成终端里执行,能看到分叉重新汇入的图形化历史
git worktree 在 VS Code 中必须手动开新窗口才能生效
VS Code 不会在单个窗口内“感知”多个工作树。即使你用命令行执行了 git worktree add ../my-feature feature/login,VS Code 也不会自动把新目录作为另一个项目加载。
- 正确做法:用 VS Code 打开新工作树目录(如
code ../my-feature),它会作为一个独立窗口启动,拥有自己的源代码管理视图、终端、扩展环境 - 两个窗口共享同一个
.git目录,所以你在窗口 A 提交后,窗口 B 的分支列表立刻刷新,但未打开的文件不会自动更新内容 - 不要手动删除工作树文件夹——必须用
git worktree remove <path></path>,否则git worktree list仍显示该条目,且下次创建同名路径会报错
最常被忽略的一点:VS Code 的 Git 集成完全依赖工作区根目录下是否存在 .git。如果你在子文件夹里打开编辑器(比如 code src/),Git 功能就彻底失效——状态栏不显示分支,源代码管理视图空白,右键无 Git 选项。务必确认打开的是仓库根目录。










