前言
最近我在迁移一个浏览器项目的 Git 仓库时,遇到了一个典型但棘手的问题:本地有完整的提交历史,但无法推送到 Gitee,因为某个文件超过了 100MB 限制。经过一番探索,我最终成功将项目完整迁移到新的托管平台 cnb.cool,并保留了所有修改记录。本文将完整复盘这一过程,希望能帮助遇到类似问题的开发者。
操作
我首先选择了大家熟知的gitee平台来作为我的代码存储,于是我便开始在工作区执行git命令
# 更改 remote 地址为你的新仓库
git remote set-url origin ******
# 验证是否设置成功
git remote -v你应该看到:
origin ****** (fetch)
origin ****** (push)# 4. 推送所有本地分支(master, *** 等,有什么推送什么)
git push -u origin master
git push -u origin ***这时候代码就已经成功推送到了代码仓库,但我在推送到gitee的时候报错,如下所示:
remote: Find the desired index: ..., size: 111.248MB, exceeds quota 100MB
remote: Please remove the file[s] from history and try again
! [remote rejected] master -> master (pre-receive hook declined)Gitee(以及 GitHub、GitLab.com)对 单个 Git 对象大小 有硬性限制:
最大单文件 ≤ 100MB
即使你后来删除了该文件,只要它曾出现在历史中的某个 commit 里,推送就会失败
分批提交或多次推送无效——因为 Git 推送的是完整对象历史
我当时想换github,但经过我的查询,这些商业平台,为了节省存储和带宽,强制限制单文件 ≤100MB,且不可绕过。于是我便找到了cnb.tool,因为 cnb.cool 是基于 Gitea 搭建的自托管 Git 服务,而 Gitea 默认对单文件大小限制较宽松(通常默认 200MB 或更高,甚至无限制),不像 Gitee/GitHub 那样严格限制 100MB。于是我便在这个平台使用微信快捷登录,创建仓库(创建仓库需要组织,因为我有域名所以可以直接用和域名相关联组织),之后便重新执行上面的git命令,也是成功更改仓库地址。
默认评论
Halo系统提供的评论