微软刚刚添加了基于浏览器的合并功能。这可能可以解决小冲突问题。
此外,它还提供了 更好的可视化方案(截至Sprint 150)。
您有两种解决冲突的选择,从目标分支反向集成更改(这会创建额外的合并提交),或在目标分支上进行rebase操作(这将保持您的历史记录干净整洁)。
您需要在本地克隆存储库,执行从目标分支到您的分支的合并,然后将这些更改推送到存储库。VSTS将检测到这些更改并更新拉取请求。
-------o3 PR
/
---------o1-o2 target
因此将目标(o2)
合并到PR
中:
-------o3-o4 PR
/ /
---------o1----------o2 target
然后完成PR。
-------o3-o4 PR
/ / \
---------o1----------o2--o5 target
或者,您可以在本地克隆repo,将PR分支变基到目标分支的最新版本上,解决变基中出现的所有问题,并强制推送更改回PR分支。 VSTS将检测到更改并更新拉取请求。
-------o3 PR
/
---------o1-o2 target
因此,将o3
的变更基于o2
进行重新定位: -------o3 PR
/
---------o1-o2 target
然后完成PR
(在下面的情况下使用快进式合并):
---------o1-o2-o3 target
回答 @metabuddy 的问题:
然后呢?这只展示了如何在本地解决冲突,我无法直接将目标分支或源分支推送到 VSTS,因为我有分支策略需要从特征分支创建拉取请求。
你可以按照上述步骤操作,只是源分支和目标分支会稍有不同。
您可以使用@jessiehouwing提供的上述技术,或者使用新的插件。MicrosoftDevLabs发布了解决冲突的插件链接。插件链接如下:
https://marketplace.visualstudio.com/items?itemName=ms-devlabs.conflicts-tab经过一些失败的尝试,我找到了可行的解决方案,基于@Sailesh在合并开发分支和主分支问题中的回答:
首先将master
合并到development
中,这样如果有任何冲突,您可以在development
分支本身解决。
(on branch development)$ git merge master
在此之后,您可以轻松地完成相反方向的 Pull Request,而不会出现任何问题
这个答案是针对@metabuddy在@sky91的回答中的评论而给出的。
如果您的目标分支是'master',并且在'master'分支上应用了不接受直接合并的策略,该怎么办?
注意:考虑'master'是目标分支,'x001'是拉取请求中的源分支,在'master'和'x001'分支之间存在冲突。
在这种情况下,@sky91的解决方案将无法使用。为此,您需要按照以下步骤操作。