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

代码审查操作
在每个冲突上,VS Code 显示 CodeLens 动作,使您可以快速解决冲突:
- 接受当前更改:仅保留您的分支版本
- 接受传入更改:仅保留传入分支的版本
- 接受所有更改:保留两个版本,一个接一个
- 比较更改:打开差异视图以并排查看更改
解决与内联操作的冲突
对于简单的冲突,您可以在编辑器中直接使用 CodeLens 动作来解决它们:
-
从源代码控制视图中打开有冲突的文件
-
查看带有冲突标记的冲突部分
-
选择上面冲突的 CodeLens 动作之一:
- 接受当前更改以保留您的版本
- 接受传入更改以保留传入版本
- 接受所有更改 以保留两个版本
-
对文件中的每个冲突重复此操作
-
当所有冲突解决后保存文件
在文件中解决冲突后,冲突标记会消失,您可以将文件标记为暂存,该文件会移动到源代码控制视图中的暂存更改部分。然后您可以提交更改。
对于更复杂的冲突,如果需要将两个更改的部分结合起来,您可以手动编辑文件。删除冲突标记(<<<<<<<<<<,输入: =======,没有提供任何文本。) 并编辑内容以达到预期效果。
使用三路合并编辑器
对于更复杂的冲突或当你希望并排查看所有更改时,请使用三路合并编辑器。此编辑器提供了一个包含三个面板的全面视图:
- 入站 (左侧): 合并分支的更改
- 当前 (右): 从您当前的分支更改
- 结果(底部):将要保存的合并结果
打开合并编辑器
打开三路合并编辑器:
-
在源代码控制视图中选择一个有冲突的文件
-
选择在合并编辑器中打开,或选择上下文菜单中的在合并编辑器中解决按钮,该按钮出现在编辑器顶部

接受合并编辑器中的更改
合并编辑器显示每个冲突更改旁边的复选框。使用这些复选框来选择要接受哪些更改:
-
查看 收件箱 和 当前 面板中的更改
-
使用编辑器 CodeLens 动作来选择接受哪些更改:
- 接受入站或当前更改
- 接受一个两者结合的更改,以智能合并这两个更改
- 忽略更改以将其从结果中排除
-
结果面板在底部自动更新以显示您的选择
-
使用结果编辑器右侧的冲突计数器来跟踪剩余未解决的冲突数量。
-
当所有冲突都解决后,选择完成合并以保存更改并关闭合并编辑器
合并编辑器中的手动编辑
有时你需要将两个更改的部分结合起来或创建一个全新的解决方案。你可以直接编辑结果面板:
-
在结果面板的任何地方选择以放置光标
-
根据需要编辑内容,结合两个更改中的元素或编写新代码
使用忽略按钮在入站或当前面板中隐藏你不希望接受的更改。这有助于集中关注相关的冲突。
替代布局
选择合并编辑器右上角的三个点 (···) 会打开一个带有附加选项的上下文菜单。您可以切换到垂直布局并显示基础视图,该视图显示在进行任何更改之前文件的状态。
三个点旁边 入站、当前和 结果 提供了每个视图的选项,例如与基线并排显示差异、接受所有更改或重置结果。
解决与AI的冲突(实验性)
AI辅助的冲突解决是一个实验性功能,需要 GitHub Copilot 订阅。
VS Code 可以使用 AI来自动解决合并冲突。此功能分析冲突的两个版本并提出解决方案:
-
在编辑器中打开带有冲突的文件
-
选择编辑器顶部的用AI解决合并冲突按钮

-
VS Code 打开聊天视图并启动一个分析冲突的代理流程
-
在编辑器中查看提议的更改
-
接受分辨率或根据需要进行手动调整
AI 考虑合并基(两个分支的公共祖先)和每个分支的更改,以生成一个试图保留两个更改意图的解决方案。
完成合并操作
在解决所有冲突后,您需要通过提交更改来完成合并操作:
-
验证所有冲突的文件已被解决并位于暂存更改部分
-
输入提交信息并选择提交以完成合并
如果你需要放弃合并操作,请在命令面板中选择Git: 中止合并。这将使你的仓库恢复到合并开始前的状态。
将 VS Code 配置为默认合并工具
您可以通过在终端中运行以下命令将 VS Code 设置为默认的 Git 合并工具。当您在命令行中执行合并并出现冲突时,Git 将打开 VS Code 的合并编辑器来帮助您解决这些问题。
git 配置 --全局 合并工具 vscode
git 配置 --全局 mergetool.vscode.cmd 'code --wait $MERGED'
要将 VS Code 作为默认的 Git 差异工具,请运行:
git 配置 --全局 差异工具 vscode
git 配置 --全局 差异工具.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
下一步
- 分支和工作树 - 了解分支管理及尽量减少冲突的策略
- 暂存和提交 - 了解暂存更改和创建提交
- 仓库和远程仓库 - 了解如何与远程仓库进行交互
- 源代码管理概述 - 在 VS Code 中探索其他 Git 功能
- VS Code中的Copilot - 了解更多由AI驱动的开发功能