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

如何解决自托管GitLab迁移到GitHub时镜像推送分支被拒绝的问题

Git自托管服务仓库迁移remote rejected故障解决

故障根因定位

你遇到的remote: fatal error in commit_refs报错属于GitHub(自托管)侧的配置拦截问题,本地的bare clone和mirror push操作本身没有逻辑错误,所有分支集体推送失败的核心原因集中在目标仓库的限制规则上。

排查&解决步骤

  • 确认账号权限
    你使用的SSH密钥对应的GitHub账号,必须要有目标仓库的写入权限+分支创建权限,如果是组织级仓库,需要确认你在legacy/OCG项目组的角色是维护者(Maintainer)及以上,普通开发者角色默认可能没有批量创建分支的权限。
  • 临时关闭目标仓库的拦截规则
    新创建的空仓库如果组织层面配置了全局限制规则,会拦截所有分支推送:
    1. 进入目标GitHub仓库的「设置」→「代码和自动化」→「分支保护规则」
    2. 临时删除或禁用所有匹配*的全局分支保护规则,包括「要求PR才能合并」「要求签名提交」「分支名格式限制」等规则
    3. 如果你用的是GitHub Enterprise自托管版本,额外检查「仓库设置」→「推送规则」里有没有限制提交信息格式、提交者身份的拦截规则,全部临时关闭后再尝试推送
  • 确认存储配额
    确认目标GitHub实例的存储配额没有满,单仓库大小限制是否大于当前推送的510M左右的仓库体积,存储不足也会触发commit_refs阶段的报错。
  • 重试推送命令
    以上配置调整完成后,在本地bare仓库目录重新执行推送命令即可:
git push --mirror git@code.new-github.cloud:legacy/OCG/my-big-repo.git

如果仍有个别分支推送失败,可以单独推送失败分支排查具体拦截原因:

git push origin 6722-GenerateEFTpaymentsforaffiliationsthatareconfiguredforEFTpayments
  • 迁移完成后恢复之前关闭的分支保护、推送规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:36:00