降级Django后GitHub无法解决冲突合并,推送分支遇无限循环如何解决
问题原因
你陷入操作循环的核心原因是:你按照官方流程完成本地合并的过程中,远程main分支产生了新的提交,导致你本地的main版本落后于远程版本,直接推送被拒。执行git pull时默认会将远程新提交和你本地刚合并完的内容做二次合并,已经解决过的冲突就会复现。
解决步骤
- 先锁定最终要的功能分支代码
- 切回你的功能开发分支(将下方的
foobranch替换为你自己的分支名):git checkout foobranch - 确认当前分支的代码就是你开发完成、所有功能正常的最终版本,所有改动都已提交,没有未保存的变更。
- 基于最新远程main分支处理一次冲突
- 拉取远程所有最新的提交记录:
git fetch origin - 将你的功能分支变基到最新的远程main分支上,全程只需要处理一次冲突:
git rebase origin/main - 执行上述命令后如果出现冲突提示,逐个打开冲突文件,手动保留你需要的代码(你的功能分支逻辑),每处理完一个冲突文件执行
git add 对应文件名,所有冲突处理完成后执行git rebase --continue即可完成变基。如果中途想放弃本次操作,执行git rebase --abort就能回到操作前的状态。 - 变基完成后测试一遍所有功能,确认运行正常。
- 合并到main并推送
- 切换到本地main分支:
git checkout main - 将本地main强制同步为和远程main完全一致的状态,清除本地旧的合并记录:
git reset --hard origin/main - 合并处理完冲突的功能分支到本地main:
git merge --no-ff foobranch - 此时不存在版本落后或冲突问题,直接推送即可:
git push origin main
GitHub Desktop操作补充
如果你偏好图形化操作,完成上述变基步骤后,打开GitHub Desktop先切到main分支,点击「拉取 origin」保证本地main和远程完全同步,再选择「合并 foobranch 到 main」,合并完成后直接点击推送即可,不会再触发冲突。
内容的提问来源于stack exchange,提问作者kaka
相关产品推荐
相关产品推荐

