在 Visual Studio 中解决合并冲突
将一个分支合并到另一个分支时,一个分支中提交的文件更改可能会与另一个分支中的更改冲突。 Git 尝试使用存储库中的历史记录来确定合并文件的效果,从而尝试解决这些更改。 如果不清楚如何合并更改,Git 会暂停合并,然后告知哪些文件发生冲突。
防止合并冲突
在大多数情况下,Git 非常擅长自动合并文件更改,只要各提交之间的文件内容没有大幅改动。 如果你的分支远远落后于主分支,请考虑在打开拉取请求之前对你的分支进行变基处理。 变基分支将合并到主分支中,而不会发生冲突。
解决合并冲突
如果你在与其他人协作处理同一分支,那么你在推送你的更改时可能会遇见合并冲突。
Visual Studio 会检测你一直在处理的本地分支是否落后于其远程跟踪分支,并提供选项供你选择。
注意
如果远程存储库支持强制推送,你可使用“Git”>“设置”来启用它。
在此示例中,选择“拉取然后推送”以添加引入远程存储库的更改。 如果在拉取更改或尝试合并两个分支时遇到任何合并冲突,Visual Studio 会在“Git 更改”窗口中、“Git 存储库”窗口中以及存在冲突的任何文件上通知你。
“Git 更改”窗口在“未合并的更改”下显示存在冲突的文件列表。 若要开始解决冲突,请双击文件。 如果在编辑器中打开了存在冲突的文档,则可选择“打开合并编辑器”。
在合并编辑器中,可使用以下任一方法开始解决冲突(如带编号的屏幕截图中所示):
逐行查看冲突,并通过选择复选框来选择保留左侧还是右侧更改。
- 或 -
选择“接受传入”按钮(或按 F10)以接受所有传入的更改,或选择“接受当前”按钮(或按 F11)以保留所有存在冲突的更改的当前版本。 可以通过选择任一并排框顶部的复选框来执行相同的操作。
- 或 -
在“结果”窗口中手动编辑代码。
解决合并冲突后,选择“接受合并”。 针对所有冲突文件重复此过程。
使用“Git 更改”窗口创建合并提交并解决冲突。
注意
如果需要保留对文件的所有更改,可在“未合并的更改”部分右键单击该文件,然后选择“保留当前项(本地)”,而无需打开合并编辑器。
提示
若要详细了解可供你使用的辅助功能选项,请参阅 Visual Studio 的辅助功能提示和技巧页面的 Git 键盘快捷方式部分。
配置 diff 工具
如果将 .gitconfig
文件设置为使用 BeyondCompare 或 KDiff3 等第三方 diff 工具,则 Visual Studio 会尊重它。 每当 Visual Studio 通常显示 diff 时,都会在所选的工具中打开单独的窗口。 有关示例,请参阅此 StackOverflow 问题。