Microsoft Visual Studio Online - Git“后续步骤:手动解决这些冲突并将新更改推送到源分支。”

时间:2018-01-21 21:29:26

标签: git azure-devops

我创建了一个名为dev。

的分支

我已经完成了将dev代码发送给master的pull请求,当我执行此pull请求时它告诉我: enter image description here

50多个冲突阻止自动合并 “后续步骤:手动解决这些冲突并将新更改推送到源分支。”

我从哪里开始?我只想让所有dev分支替换master中的所有东西。我认为没有办法解决这些冲突。

3 个答案:

答案 0 :(得分:28)

您必须在PC上执行以下操作

在分支dev

$ git pull origin master - 这将创建合并提交,您必须解决在开发和主服务器上都更改的文件中的冲突。 git status将显示更改有冲突的文件列表。

解决冲突后,提交所有更改并强制推送您的分支。之后你应该能够完成PR。

Help link for more details

答案 1 :(得分:5)

由于您需要将文件版本保留在dev分支上(在更改目标分支master中的文件时保留源分支),因此您应该对master分支进行更改以解决冲突文件,并确保您有权将更改推送到master分支。

您可以使用以下选项:

选项1:直接合并

在本地存储库中,您可以执行以下命令将dev合并到master分支,同时将冲突文件版本保留为dev分支:

git checkout master
git merge dev -X theirs
git push origin master

在您创建的现有pull请求中,它将显示已合并的分支。所以你可以放弃拉取请求。

选项2:仍然通过拉取请求合并(解决主分支上的冲突)

您可以使用以下命令解决master分支中的冲突:

# In yout local repo
git checkout master
git checkout dev -- .
git commit -m 'replace master branch version by dev for the conflict files'
git push origin master 

如果新提交推送到目标分支(主服务器),则不会更新现有pull请求中的更改。您可以找到类似的报告Pull request diff does not update when a commit from the PR is merged to the target via another branch

这意味着,网页中的拉取请求仍然显示冲突。您应该放弃现有的pull请求并重新激活(或创建一个新的请求)以将dev合并到master分支中。

答案 2 :(得分:0)

我必须做一个rebase。必须遍历所有提交并应用我的更改-它们非常广泛,重命名了名称空间和方法名称等。然后让我继续在Azure DevOps门户中执行Pull Request。实际上,我只需要刷新现有Pull Request的更改即可解决自动合并冲突。

合并代码无法解决问题,只有rebase有效。