如何在VSTS中解决pull请求中的合并冲突?

时间:2017-10-11 16:13:04

标签: git azure-devops pull-request merge-conflict-resolution

我已经创建了拉取请求,我已经进入了这个:

enter image description here

"批准"按钮不执行任何操作,完成功能被禁用。

如何在拉取请求中解决此问题?

4 个答案:

答案 0 :(得分:34)

更新

微软刚刚添加了基于浏览器的合并。这可能会让你摆脱小冲突的困境。

并提供improved visualizations of the different scenarios as of Sprint 150

对于更复杂的情况:

您有两种方法可以解决冲突,反向集成来自目标分支的更改(创建其他合并提交),或者对目标分支进行rebase(这会使您的历史记录变得干净整洁)。

在完成PR之前从目标分支合并到当前分支。

您需要在本地克隆repo,执行从目标分支到分支的合并,并将这些更改推送到存储库。 VSTS将检测更改并更新拉取请求。

            -------o3              PR
           /
---------o1-o2                     target

因此将target (o2)合并到PR

            -------o3-o4           PR
           /          /
---------o1----------o2            target

然后完成PR

            -------o3-o4           PR
           /          / \
---------o1----------o2--o5        target

重新启动PR分支以包含目标

的最新更改

或者,您可以在本地克隆repo,在最新版本的目标分支上重新绑定PR分支,从rebase解决所有问题并强制将更改推回PR分支。 VSTS将检测更改并更新拉取请求。

            -------o3              PR
           /
---------o1-o2                     target

因此将o3重新定义到o2

              -------o3            PR
             /
---------o1-o2                     target

然后完成PR(在下面的情况下使用快进合并):

---------o1-o2-o3                  target

答案 1 :(得分:14)

  1. 使用Visual Studio打开您的项目。
  2. 打开查看> 团队资源管理器
  3. 更改为分支标签。
  4. 双击要合并的分支(例如dev)。
  5. 右键点击>合并来自>选择从分支合并: master
    进入当前分支: dev
  6. 点击合并按钮
  7. 选择冲突文件
  8. 然后解决冲突。您可以单击左侧或右侧复选框 对于您要包含的部分。
  9. 然后提交合并
  10. 完成。

答案 2 :(得分:4)

您可以通过@jessiehouwing执行上述技巧或使用新插件。 MicrosoftDevLabs发布了插件的链接以解决冲突。下面给出了插件的链接 https://marketplace.visualstudio.com/items?itemName=ms-devlabs.conflicts-tab

答案 3 :(得分:0)

此答案参考@metabuddy对@ sky91答案的评论

如果您的目标分支位于“ master”和“ master”分支中,并且您应用了不接受直接合并的策略?

注意:在请求请求中,“ master”是目标分支,“ x001”是源分支,这在“ master”和“ x001”分支之间存在冲突。

在这种情况下,@ sky91的解决方案将不起作用。为此,请按照以下步骤操作。

  1. 从目标(“主”)分支创建新分支,例如“ x002”
  2. 转到Visual Studio,然后选择“ x002”
  3. 从“ x001”分支合并“ x002”。
  4. 转到您的请求请求,然后将目标分支更改为“ x002”
  5. 它将显示与拉取请求中相同的冲突。
  6. 解决所有冲突并提交合并。
  7. 刷新请求请求页面时,它将显示“更改已合并”
  8. 它必须显示“关闭”按钮。如果存在,请关闭此拉取请求。
  9. 现在,您所有的更改已合并并保存到“ x002”
  10. 创建一个从“ x002”到“主”的新拉动请求
  11. 因为所有冲突都消失了,它将允许合并到“ master”分支中。