You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Pull Request中无法通过网页编辑器处理的复杂合并冲突

问题原因

你本地执行git status看不到冲突,核心原因是你只单独切换了两个分支,没有在本地执行分支合并操作——Git只有在合并/变基执行过程中才会标记冲突文件,单独切分支时工作区干净是正常状态。
另外你列出的冲突文件里绝大多数是IDE本地配置、C++编译生成的二进制产物,这类文件本身就不应该提交到版本库,完全不需要手动解决内容冲突。

操作步骤
  • 先切到stable分支,拉取远端最新代码保证本地版本同步:
    git checkout stable
    git pull origin stable
    
  • 在本地stable分支上合并evro分支的内容,触发冲突检测:
    git merge evro
    
    命令执行完成后,再跑git status就能看到所有标记为冲突的文件了。
  • 批量清理不需要版本管理的冲突文件,这些文件的冲突不需要手动改内容,直接从版本库移除即可:
    • JetBrains IDE生成的本地配置目录:执行git rm -r .idea/整个移除
    • VS编译生成的二进制产物,全部执行git rm删除:
      git rm OpenGLTemplate/Release/*.obj
      git rm OpenGLTemplate/Release/*.iobj
      git rm OpenGLTemplate/Release/*.ipdb
      git rm -r OpenGLTemplate/Release/TibiaScape.tlog/
      git rm OpenGLTemplate/Release/*.pdb
      git rm Release/*.dll
      git rm Release/*.pdb
      
  • 处理唯一需要手动调整的源码文件冲突:打开OpenGLTemplate/Source/dllmain.cpp,找到文件里被<<<<<<< HEAD、=======、>>>>>>> evro包裹的冲突段:
    • 分隔线上方<<<<<<< HEAD到=======之间的内容是stable分支的版本
    • 分隔线下方=======到>>>>>>> evro之间的内容是evro分支的版本
      手动保留正确的业务逻辑,删除所有冲突标记符即可。
  • 标记冲突已解决,提交合并结果:
    git add OpenGLTemplate/Source/dllmain.cpp
    git commit -m "merge evro to stable, resolve conflicts"
    
  • 为了避免后续再出现这类无意义的文件冲突,在仓库根目录新建.gitignore文件,写入以下忽略规则:
    # IDE本地配置
    .idea/
    *.suo
    *.user
    # C++编译产物
    *.obj
    *.iobj
    *.ipdb
    *.tlog
    *.pdb
    *.dll
    *.exe
    Release/
    OpenGLTemplate/Release/
    
    保存后执行git add .gitignore && git commit -m "add gitignore rules for IDE and build files"提交规则,后续这些本地生成的文件就不会再被Git跟踪、产生冲突。
  • 把本地合并完成的stable分支推送到远端:
    git push origin stable
    

推送完成后回到GitHub的Pull Request页面刷新,之前的冲突提示会自动消失,就可以继续推进PR合并流程了。

补充:你之前操作时看到的evro分支upstream丢失提示不影响本次合并,你本地已经保存了evro分支的完整提交记录,本地合并不需要依赖远端evro分支的存在。

内容的提问来源于stack exchange,提问作者kuhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:39:41