我如何解决复杂的合并冲突在我的拉请求?



我做了一个从EVRO分支到STABLE分支的pull请求。

This branch has conflicts that must be resolved
Use the command line to resolve conflicts before continuing.
Conflicting files
.idea/.idea.TibiaScape/.idea/workspace.xml
OpenGLTemplate/Release/Creature.obj
OpenGLTemplate/Release/TibiaScape.iobj
OpenGLTemplate/Release/TibiaScape.ipdb
OpenGLTemplate/Release/TibiaScape.tlog/CL.command.1.tlog
OpenGLTemplate/Release/TibiaScape.tlog/CL.read.1.tlog
OpenGLTemplate/Release/TibiaScape.tlog/CL.write.1.tlog
OpenGLTemplate/Release/TibiaScape.tlog/link.read.1.tlog
OpenGLTemplate/Release/TibiaScape.tlog/link.write.1.tlog
OpenGLTemplate/Release/Waypoint.obj
OpenGLTemplate/Release/dllmain.obj
OpenGLTemplate/Release/hooks.obj
OpenGLTemplate/Release/vc143.pdb
OpenGLTemplate/Source/dllmain.cpp
Release/TibiaScape.dll
Release/TibiaScape.pdb

在"解决冲突"中可以看到一个信息框。这些冲突太复杂,无法在web编辑器中解决

所以我试着遵循github文档,它说用命令git状态我将得到所有冲突,然后我可以导航到文件并手动修复。但我的现实是不同的:

PS C:UsersAdrianDocumentsGitHubTibiaScape> git checkout stable
Switched to branch 'stable'
Your branch is up to date with 'origin/stable'.
PS C:UsersAdrianDocumentsGitHubTibiaScape> git status
On branch stable
Your branch is up to date with 'origin/stable'.
PS C:UsersAdrianDocumentsGitHubTibiaScape> git checkout evro
Switched to branch 'evro'
Your branch is based on 'origin/evro', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
PS C:UsersAdrianDocumentsGitHubTibiaScape> git branch --unset-upstream
PS C:UsersAdrianDocumentsGitHubTibiaScape> git status
On branch evro
nothing to commit, working tree clean

我如何检查冲突以便修复它们并继续合并?

为了保持干净的历史记录而不来回合并,我将做一个rebase。这实际上为您提供了解决冲突的相同任务,但保留了主分支与侧分支的清晰历史记录。

交互式重基(-i)向您展示了它的功能。它获取当前的稳定分支,并选择devro分支的单次提交。注意,它只显示了需要选择的提交。每次在rebase上创建冲突时,它都会向您显示,您必须在代码编辑器中解决这个问题。之后,阶段(添加)您的更改并继续重置。Git也会告诉你。在这个过程中,git status有时对我很有帮助。

最后,你需要强制推你的分支,因为现在有全新的提交。要小心,也许可以再检查一下你的修改是否正确。

:

--A---B---C---XXX
         /
---D---

不做:

--A---B---C--------M2
             /
---D---M1---

但更好:

--A---B---C-----------M
         /
---D---
git checkout stable; git pull;
git checkout devro;
git rebase -i stable;
[git status; git add .; git rebase --continue]
git push; -> force!

执行了从EVRO分支到STABLE分支的拉取请求

这意味着您正在尝试将evro合并为stable。但你不能,因为有合并冲突。解决方案是,在本地机器上执行反向merge:将stable合并到evro中。你会遇到同样的冲突。解决它们,完成合并,然后推进!现在你就可以在GitHub上合并pull请求了。

git fetch origin
git switch origin/evro --det
git switch -c evro
git merge origin/stable
# resolve conflicts
git add .
git merge --continue
# provide merge commit message
git push origin @
# on GitHub press the Merge button on your PR

相关内容

  • 没有找到相关文章

最新更新