Gerrit仓库迁移GitHub:PR因提交过多无法变基合并,求解决方案
解决GitHub无法处理大量提交分支合并的问题
针对你迁移Gerrit仓库到GitHub时遇到的「因提交过多无法Rebase and Merge」问题,有以下两种直接可行的方案:
方案一:直接强制推送分支到main(推荐,适用于目标GitHub仓库为空的场景)
因为你的目标GitHub仓库原本是空的,无需通过PR合并,直接将包含完整历史的分支推送到main分支即可:
- 切换到本地的
MasterReplica分支:git checkout MasterReplica - 强制将该分支推送到远程
main分支:git push origin MasterReplica:main --force
执行完成后,GitHub的main分支就会包含所有10000次提交历史,无需经过PR流程。
方案二:本地完成合并后推送(若需要保留PR记录)
如果你必须通过PR完成合并流程,可以绕过GitHub的Web端限制,在本地完成重基后再推送:
- 切换到本地
main分支并拉取最新代码(此时main应该还是空仓库的初始提交):git checkout main git pull origin main - 将
MasterReplica分支的提交重基到main分支上:
(因为两个分支是无关历史,重基后git rebase MasterReplicamain分支会直接继承MasterReplica的所有提交历史) - 强制推送重基后的
main分支到远程:git push origin main --force
之后你可以关闭之前的PR,因为main分支已经包含了完整历史。
补充说明
GitHub Web端的「Rebase and Merge」功能对单次处理的提交数量有隐性限制,当提交数过万时会触发性能保护机制导致失败,而本地Git操作不受此限制,因此直接在本地完成历史合并后推送是最可靠的方式。
内容的提问来源于stack exchange,提问作者Parag Kadam
相关产品推荐
相关产品推荐

