VSCode源码控制视图是Git命令的轻量封装,分支操作通过状态栏触发,合并需命令面板执行Merge Branch...,冲突解决后须手动暂存;高级功能如图形化分支、rebase等依赖GitLens等扩展。

VSCode 的源码控制视图(Source Control view)本身不直接提供「高级分支管理」或「可视化合并冲突解决」能力,它本质是 Git 命令的轻量封装界面;真正支撑分支与合并操作的是底层 Git 集成,而 VSCode 通过 UI 和命令面板把关键动作暴露得更直观——但很多功能默认隐藏、需手动触发或依赖扩展。
如何快速切换/创建/删除分支
VSCode 把分支操作集中在左下角状态栏的 main(或当前分支名)区域:
- 点击分支名 → 弹出分支列表(含本地 + 远程),可直接检出(
Checkout)已有分支 - 点击后选择
Create new branch...→ 输入新分支名 → 自动基于当前 HEAD 创建并切换 - 删除分支需右键分支列表中的分支项 → 选
Delete Branch...;注意:不能删当前所在分支,也不能删未合并的分支(除非勾选Force delete) - 远程分支不会自动同步显示,需先执行
Git: Fetch(Ctrl+Shift+P→ 输入该命令)
合并分支时为什么看不到「Merge」按钮?
VSCode 源码控制视图里没有独立的「Merge」UI 按钮。合并必须通过命令面板触发:
-
Ctrl+Shift+P→ 输入Merge Branch...→ 选择目标分支(如feature/login)→ 回车即执行git merge feature/login - 若当前分支有未提交变更,VSCode 会阻止合并并提示「There are uncommitted changes」——必须先提交或暂存(
Stash) - 如果发生冲突,文件会出现在「MERGE CHANGES」区域,而非普通「CHANGES」;此时双击冲突文件即可进入内联冲突编辑器(显示 >>>>>>)
冲突文件怎么高效标记为已解决?
VSCode 内置的冲突编辑器支持手动编辑,但「标记为已解决」不是自动的,需显式操作:
- 编辑完冲突块后,右键文件 → 选
Accept Current Change/Accept Incoming Change/Accept Both Changes,或点击行号旁的对应图标 - 也可在编辑器顶部点击
Accept All Current Changes等批量操作按钮(仅当文件处于 MERGE 状态时出现) - 完成所有修改后,必须点击源码控制视图顶部的
+(Stage)按钮将文件加入暂存区,否则git commit不会包含该解决结果 - 误操作导致冲突标记错乱?可右键文件 →
Revert Changes回退到合并前状态,再重试
哪些功能其实依赖 Git 扩展而非 VSCode 原生?
VSCode 自带 Git 支持仅覆盖基础命令;以下常见需求需额外扩展:
-
GitLens:查看某行代码谁在何时修改(blame)、比较任意两个分支的差异、图形化分支拓扑图 -
Git Graph:独立视图展示完整 commit 图,支持拖拽合并、右键创建标签、可视化 cherry-pick -
Partial Diff:对比未暂存/已暂存/工作区之间的局部差异(比如只比某几个函数) - 原生 VSCode 不支持 rebase 交互式编辑(
git rebase -i),也无法在 UI 中选择「squash」「edit」等操作,必须用终端或 GitLens 提供的命令
真正容易被忽略的是:VSCode 的分支操作全部走的是同步 Git CLI 调用,所以 .git/config 中的 pull.rebase、merge.ff 等配置依然生效,UI 不会绕过它们——如果你发现 Merge 总是变成 Rebase,或者快进失败,问题大概率在 Git 配置,而不是 VSCode 设置。










