我已经创建了拉请求,我得到了这个:
“批准”按钮不执行任何操作,“完成”被禁用。
如何在请求中解决这个冲突?
微软刚刚添加了基于浏览器的合并。这可能会让你摆脱小冲突的困境。
并提供 Sprint 150改进了不同场景的可视化。
您有两个选择来解决冲突,从目标分支反向集成更改(这将创建额外的合并提交) ,或者重新基于目标分支(这将使您的历史记录变得干净漂亮)。
您需要在本地克隆回购,从目标分支到您的分支执行合并,并将这些更改推送到存储库。VSTS 将检测更改并更新请求。
-------o3 PR / ---------o1-o2 target
因此,将 target (o2)合并到 PR:
target (o2)
PR
-------o3-o4 PR / / ---------o1----------o2 target
然后完成公关
-------o3-o4 PR / / \ ---------o1----------o2--o5 target
或者,您可以在本地克隆回购,将 PR 分支基于目标分支的最新版本,解决来自 rebase 的所有问题,并强制将更改推回 PR 分支。VSTS 将检测更改并更新请求。
因此,将 o3重新定位到 o2:
o3
o2
然后完成 PR(在下面的例子中使用快进合并) :
---------o1-o2-o3 target
您可以通过@jessiehouwing 或使用新的插件来实现上述技术。MicrosoftDevLabs 发布了插件的链接来解决冲突。下面给出了插件的链接 Https://marketplace.visualstudio.com/items?itemname=ms-devlabs.conflicts-tab
为了回答@metuddy 的问题:
然后呢?这只说明了如何在本地解决冲突,我不能将目标或源分支直接推送到 VSTS,因为我有分支策略,需要从特性分支发出请求。
您可以按照上面的步骤操作,只是源分支和目标分支略有不同。
这个问题的答案是参考了@metuddy 对@sky91的回答的评论
如果您在“ master”和“ master”分支上的目标分支应用了不接受直接合并的策略,该怎么办?
注意: 假设‘ master’是目标分支,‘ x001’是 pull 请求中的源分支,它在‘ master’和‘ x001’分支之间存在冲突。
在这种情况下,@sky91的解决方案是行不通的。
经过一些失败的尝试,我找到了工程解决方案,基于@Sailesh 在 将开发分支与 master 合并问题的答案:
从将 master合并到 development开始,这样如果有任何冲突,您可以在 development分支本身中解决
master
development
(on branch development)$ git merge master
在此之后,你可以 complete的拉请求在相反的方向没有问题
complete