如何在Azure Devops与Visual Studio 2019中解决拉取请求合并冲突
Azure DevOps PR 合并冲突本地解决指南(适配VS2019 v16.11.2)
前置说明
你遇到的冲突是特性分支与远程最新master分支的代码差异导致的,本地master拉取提示最新属于正常现象,因为冲突存在于特性分支未同步master的部分,不需要在网页端或VS内找PR专属的冲突解决入口,按以下步骤本地处理即可:
解决步骤
1. 同步本地仓库的远程最新索引
打开VS内置终端或者系统命令行,进入仓库根目录执行:git fetch origin
2. 确认本地master分支为最新版本
切换到master分支,执行拉取操作:git checkout mastergit pull origin master
3. 切换到开发分支合并master并解决冲突
切换到你提交了更新的特性分支,执行合并操作:git checkout <你的特性分支名称>git merge master
执行后VS的Git Changes面板会自动识别冲突,所有冲突文件会被标记为冲突状态:
- 点击冲突文件旁的「解决」按钮,VS会弹出三栏对比面板:左侧为master分支代码,右侧为你特性分支的代码,中间为合并结果区
- 逐行确认需要保留的代码段,全部调整完成后点击「接受合并」
- 所有冲突文件处理完成后,在Git Changes面板填写提交信息,执行提交操作
如果合并过程中需要放弃本次合并,执行
git merge --abort即可回到合并前的分支状态
4. 推送解决完冲突的分支到远程
执行推送命令,把本地合并后的提交同步到远程仓库:git push origin <你的特性分支名称>
5. 完成PR合并
回到Azure DevOps的PR页面,系统会自动检测到分支有新提交,冲突提示会自动消失,即可正常执行PR合并操作。
补充说明
- Azure DevOps网页端的冲突解决入口仅对简单单行文本冲突开放,涉及多行交叉冲突、文件重命名、二进制文件的冲突不会显示网页端解决入口
- VS2019的Git Changes面板默认不提供远程PR的直接操作入口,无需特意切换到Team Explorer,按上述本地流程处理即可
内容的提问来源于stack exchange,提问作者gjvdkamp
相关产品推荐
相关产品推荐

