必须先切换到目标分支(如main),再通过命令面板执行git: merge branch,选择源分支合并;若需压缩合并则须在终端运行git merge --squash;合并后须检查冲突文件并手动解决,最后提交推送。

直接在 VS Code 里点几下就能完成分支合并,不需要记命令,但必须先切对目标分支——否则 merge 会进错地方,甚至覆盖掉别人刚推的提交。
必须先切换到你要合并进的那个分支
VS Code 的 Merge Branch 操作永远是「把选中的分支,合入当前活动分支」。很多人点开命令就选源分支,忘了自己还在 develop 上,结果把 main 合进了 develop,白忙活还污染历史。
- 看左下角状态栏,确认显示的是目标分支名(比如
main) - 如果不是,点击状态栏分支名 → 在弹出列表中选目标分支 → 等右下角提示“Checked out branch 'main'”再继续
- 远程分支会带
origin/前缀,别误点它;要合并的是本地develop,不是origin/develop
用命令面板触发 merge,别依赖右键菜单
VS Code 自带的 Git 面板右上角「··· → Merge Branch」偶尔不响应或列表为空;更稳的方式是调命令面板,它强制刷新分支缓存,且支持键盘快速筛选。
使用 `gh` CLI 与 GitHub 交互。通过`gh issue`、`gh pr`、`gh run` 和 `gh api` 管理 issue、PR、CI 运行以及高级查询。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入
Git: Merge Branch,回车 - 列表中会出现所有本地分支(不含远程前缀),用上下键选中源分支(如
feature/login),回车确认 - 如果列表没更新,先执行一次
Git: Fetch再重试
合并后立刻检查有没有冲突,别急着 push
VS Code 合并成功后不会自动弹出冲突提示——它只在「源代码管理」面板的 Changes 区显示冲突文件,并加红色感叹号 ❗。你得手动点进去看,否则直接 Push 会失败,还可能把半拉子冲突标记一起推上去。
- 合并完立刻看左侧「源代码管理」面板,
Changes下是否有带 ❗ 的文件 - 点开冲突文件,编辑器会高亮显示
和 <code>>>>> feature/login区块 - 鼠标悬停在冲突块上,会出现「Accept Current Change」「Accept Incoming Change」「Accept Both Changes」快捷按钮
- 改完保存,文件会自动从冲突区移入
Changes,这时才能正常Stage并Commit
想压成一条提交?必须用终端配合
VS Code 界面不提供 squash merge 选项。如果你希望把 feature 分支的 12 次提交压缩成 1 条干净记录再合入 main,只能靠终端命令,但整个流程仍可留在 VS Code 里完成。
- 确保已在
main分支(左下角确认) - 打开 VS Code 内置终端,运行:
git merge --squash feature/login - 命令无输出即表示压缩成功,此时所有变更已暂存,但尚未提交
- 回到「源代码管理」面板,你会看到全部改动出现在
Changes,像普通修改一样Stage+Commit - 注意:这步不会创建 merge commit,所以
git log里看不到分支合并线,图形化工具(如 Git Graph)里也看不到 merge 边
真正容易被忽略的是:合并前没 Fetch 就操作,会导致你基于过期的本地 main 合并,推送到远程时大概率被拒绝;还有人把 git pull 当作万能同步,其实它等价于 fetch + merge,在多人协作中不如先 fetch 再决定要不要 merge 或 rebase —— 这些细节不写进操作步骤里,但踩一次就得重来半小时。










