在 VS Code 中解决合并冲突
合并冲突发生在 Git 无法自动合并不同分支的变更时。VS Code 提供多种工具,帮助您高效识别和解决这些冲突。
学习如何利用内联编辑器作、三向合并编辑器和AI辅助解决,在Visual Studio Code中解决合并冲突。
理解合并冲突
合并冲突发生在 Git 遇到无法自动解决的竞争变更时。常见情景包括:
- 两个分支会修改文件中的相同行
- 一个分支删除了另一个分支修改的文件
- 两个分支在同一地点添加不同的内容
当你尝试合并、重基、拉取或挑选包含冲突变更的提交时,Git 会暂停作并标记冲突,供你手动解决。
了解更多关于创建和管理分支的方法,以组织你的开发工作并减少合并冲突。
识别VS代码中的冲突
当合并冲突发生时,VS Code 提供多种视觉指标,帮助您识别和解决冲突。有冲突的文件会出现在源代码控制视图中的合并变更部分。
编辑器冲突标记
当你打开有冲突的文件时,VS Code 会用以下标记高亮冲突部分:
<<<<<<<头(或当前分支名称):标志着你当前分支变更的开始=======:将两个相互冲突的版本分开>>>>>>> 分支名称: 标志着新分支变更的结束

CodeLens 动作
在每个冲突之上,VS Code 显示 CodeLens 动作,帮助你快速解决冲突:
- 接受当前变更:只保留你分支的版本
- 接受新来的变更:只保留新分支的版本
- 接受两个变更:保留两个版本,依次一个
- 比较变化:打开不同视图,并列查看差异
用内联动作解决冲突
对于简单的冲突,你可以直接在编辑器中使用CodeLens作来解决:
-
从源控制器视图打开一个有冲突的文件
-
请查看带有冲突标记的冲突章节
-
选择冲突上方的 CodeLens 动作之一:
- 接受当前变更以保留你的版本
- 接受新版本以保留新版本
- 接受两个变更以保留两个版本
-
对文件中的每个冲突重复此过程
-
所有冲突解决后保存文件
解决文件冲突后,冲突标记消失,你可以将文件暂存,文件会移动到源控视图中的“阶段变更”部分。然后你可以继续提交更改。
对于需要合并两个变更部分的复杂冲突,你可以手动编辑文件。删除冲突标记(, , ),并编辑内容以达到预期效果。<<<<<<<=======>>>>>>>
使用三路合并编辑器
对于更复杂的冲突,或者想要所有变更的并排视图,可以使用三向合并编辑器。本编辑通过三个面板提供了全面的视角:
- 进入(左):合并分支的变更
- 当前(右):与你当前分支的变更
- 结果(底部):将被保存的合并结果
打开合并编辑器
要打开三路合并编辑器:
-
在源控制器视图中选择有冲突的文件
-
从右键菜单中选择“在合并编辑器中打开”,或选择出现在编辑器顶部的“在合并编辑器中解决”按钮

在合并编辑器中接受更改
合并编辑器会在每个冲突的更改旁边显示冲突并复选框。请使用这些复选框选择接受哪些变更:
-
审查新加入和当前面板的变更
-
使用编辑器中的 CodeLens作选择接受哪些更改:
- 接受接收或当前变更
- 接受两者组合以智能合并两个变更
- 忽略这个变化,避免出现在结果中
-
底部的结果面板会自动更新,显示你的选择
-
使用结果编辑器右侧的冲突计数指示器来跟踪剩余的冲突数量。
-
当所有冲突解决后,选择完成合并以进行更改并关闭合并编辑器
合并编辑器中的手动编辑
有时你需要将两者的部分变化合并,或者创建一个全新的分辨率。你可以直接编辑结果面板:
-
在结果面板中任意选择一个位置放置光标
-
根据需要编辑内容,结合两者的变更元素或编写新代码
使用“接收”或“当前”面板中的忽略按钮来隐藏你不想接受的更改。这有助于聚焦于相关冲突。
替代布局
在合并编辑器右上角选择三个点(···)后,会打开带有额外选项的右键菜单。你可以切换到竖式布局,并显示基础视图,显示文件在任何更改前的状态。
“输入”、“当前”和“结果”旁边的三个点为每个视图提供了选项,比如显示与基数的并排差分、接受所有变更或重置结果。
解决与人工智能的冲突(实验性)
AI辅助冲突解决是一项实验性功能,需要GitHub Copilot订阅。
VS Code 可以利用 AI 自动解决合并冲突。本功能分析了两种冲突变更版本,并提出了解决方案:
-
在编辑器中打开一个有冲突的文件
-
选择编辑器顶部的“解决与AI合并冲突”按钮

-
VS Code 打开聊天视图,启动一个代理流程来分析冲突
-
请在编辑器中查看拟议的修改
-
接受分辨率或根据需要手动调整
AI会考虑合并基址(两个分支的共同祖先)以及各分支的变更,生成一个试图保留两项变更意图的解析。
完成合并作
解决所有冲突后,你需要通过提交以下更改来完成合并作:
-
请确认所有冲突文件都已解决,并且都在“阶段变更”部分
-
输入提交信息并选择提交以完成合并
如果你需要放弃合并作,请从命令面板中选择 Git: Abort Merge。这会将你的仓库恢复到合并开始前的状态。
将VS Code配置为默认合并工具
你可以在终端里运行以下命令,将VS Code设置为默认的Git合并工具。当你在命令行执行合并导致冲突时,Git 会打开 VS Code 的合并编辑器来帮助你解决冲突。
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'
要使用 VS Code 作为 Git 的默认差别工具,请运行:
git config --global diff.tool vscode
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
下一步
- 分支与工作树——了解分支管理及减少冲突的策略
- 分阶段与提交——学习分阶段变更和创建提交
- 仓库与远程仓库——了解如何使用远程仓库
- 源代码控制概述 - 探索VS Code中的其他Git功能
- VS Code 中的副驾驶——发现更多 AI 驱动的开发功能