我创建了一个名为dev。
的分支我已经完成了将dev代码发送给master的pull请求,当我执行此pull请求时它告诉我:
50多个冲突阻止自动合并 “后续步骤:手动解决这些冲突并将新更改推送到源分支。”
我从哪里开始?我只想让所有dev分支替换master中的所有东西。我认为没有办法解决这些冲突。
答案 0 :(得分:28)
您必须在PC上执行以下操作
在分支dev
$ git pull origin master
- 这将创建合并提交,您必须解决在开发和主服务器上都更改的文件中的冲突。 git status
将显示更改有冲突的文件列表。
解决冲突后,提交所有更改并强制推送您的分支。之后你应该能够完成PR。
答案 1 :(得分:5)
由于您需要将文件版本保留在dev
分支上(在更改目标分支master
中的文件时保留源分支),因此您应该对master
分支进行更改以解决冲突文件,并确保您有权将更改推送到master
分支。
您可以使用以下选项:
在本地存储库中,您可以执行以下命令将dev
合并到master
分支,同时将冲突文件版本保留为dev
分支:
git checkout master
git merge dev -X theirs
git push origin master
在您创建的现有pull请求中,它将显示已合并的分支。所以你可以放弃拉取请求。
您可以使用以下命令解决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
有效。