VSCode 自带代码对比与合并功能足够日常使用:右键文件“Select for Compare”再选目标即可并排对比;Git 提交前在源代码管理面板点击 M/A 文件查看工作区/暂存区差异;合并冲突时用图形按钮安全解决;分支/提交对比需通过命令面板或 Timeline;注意开启空格变化显示。

VSCode 自带的代码对比和合并能力足够日常使用,不需要装插件就能完成大部分 Git 场景下的 diff 与 resolve。
怎么打开两个文件的并排对比
最常用的方式是右键文件 → Select for Compare,再右键另一个文件 → Compare with Selected。VSCode 会自动在新标签页中以左右分栏形式展示差异,修改、复制、跳转行都支持。
- 快捷键更高效:选中一个文件后按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入File: Compare Active File With...,再选目标文件 - 对比时,
→和←键可快速在差异块间跳转;Ctrl+Enter(或Cmd+Enter)能把右侧改动应用到左侧(即“接受更改”) - 不建议用拖拽方式打开对比——容易误触为移动文件;也不要用双击打开两个文件再手动切标签,那样不会触发对比模式
Git 提交前如何查看暂存区与工作区差异
在 VSCode 左侧源代码管理(Source Control)面板中,每个已修改文件旁会显示图标:M 表示已修改但未暂存,U 表示未跟踪,A 表示已暂存。点击任意一个文件即可直接进入内联 diff 视图。
- 点击
M文件:看到的是工作区 vs 暂存区(即未git add的改动) - 点击
A文件:看到的是暂存区 vs HEAD(即已git add但未commit的内容) - 右上角有三个小按钮:
✓(Stage),↺(Discard),⋯(更多操作),其中Discard是丢弃工作区改动,不是撤销暂存
合并冲突时怎么安全 resolve
当 git merge 或 git pull 报出 conflict,VSCode 会在编辑器中高亮冲突区块,并提供图形化操作入口——只要点击文件名旁的 Accept Current Change / Accept Incoming Change / Accept Both Changes 按钮即可。
- 冲突标记(
,=======,>>>>>>)仍会保留在文本中,但 VSCode 会把它们折叠成可点选区域;手动删标记+留代码=高风险,别这么干 - 如果多个冲突分散在不同函数里,用
Ctrl+Shift+P输入Go to Next Conflict快速定位,比滚屏找快得多 - 合并后务必检查是否残留
—— VSCode 不会自动校验语法或逻辑,只管结构上“选完了”
怎么对比分支或提交之间的差异
VSCode 的命令面板(Ctrl+Shift+P)里搜 Git: Compare Branches,选当前分支和目标分支,就能生成一个虚拟的 diff 视图,列出所有变更文件。
- 这个对比结果是只读的,不能直接编辑或 accept;如需修改,得先 checkout 到目标分支,或用
git cherry-pick拉个别 commit - 想看某次提交改了什么?在源代码管理面板顶部点击
⋯→Open Timeline,找到对应 commit,点右侧Compare with Branch即可 - 注意:
Compare with Branch默认对比的是当前分支与所选 commit 所在分支的最新状态,不是 commit 本身——要精确对比单个 commit,请用git show命令或安装GitLens
真正容易被忽略的是:VSCode 的 diff 面板默认不显示空格变化(比如仅缩进变动),需要在右下角点击 ≡ 图标,勾选 Ignore Leading/Trailing Whitespace 才能关闭该过滤——否则你会纳闷“明明改了,怎么没标红”。










