我的问题概要:在我将几百字节添加到两个现有文件中后,Bitbucket上我的一个私人代码库大小突然增加了一倍以上。该代码库现在超过2GB,导致Bitbucket将其置于只读模式。由于它处于只读模式,我无法推送可以减小代码库大小的更改。(进退两难)
详细信息:我们公司最近开始在Bitbucket上托管git代码库。我负责的其中一个代码库大小约为973MB,接近1GB的软限制。为了缩小代码库的大小,我按照Bitbucket文档文章“将代码库拆分为两个”中的说明,将约450MB的文档和在线帮助文件移动到了它们自己的私人代码库中。然后,我按照Bitbucket文档文章“减少代码库大小”和“维护Git代码库”中的说明进行操作,具体如下:
git count-objects -vH
显示了一个大小约为973MB的size-pack。
我运行了git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc' HEAD
来删除doc目录(即我移动到新代码库中的内容)。
我运行了以下命令来过期引用和修剪:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now
git count-objects -vH
显示了一个大小为 881.1 MiB 的 size-pack,du -sh .git/objects
返回了 882M。我很失望移动了超过 450MB,仅减少了不到 90MB 的存储库大小,但还是将更改推送到了 Bitbucket:
git push --all --force
git push --tags --force
在Bitbucket仓库的设置页面,仍显示973MB大小。我登出、刷新浏览器、重新登录,但都没有用-仓库大小仍保持在973MB。
今天早上(在上述更改三天后),我对两个现有文件进行了几处小修改,将这些文件的大小总共增加了不到1KB,将其添加并提交到我的本地仓库,然后将更改推送到Bitbucket。几分钟后,我查看了仓库的Bitbucket页面,并看到一个红色警告横幅通知我“此存储库超过2GB限制,并处于只读模式”。现在设置页面显示仓库大小为2.3GB。
根据Bitbucket的记录,最近三天远程仓库中的唯一活动是将几百个字节添加到两个文件中。该推送可能并不是导致仓库大小增加了一倍以上的原因,但两个事件在时间上密切相关。
git reflog show
返回空值。
将新副本克隆到备用目录,然后运行git count-objects给出一个881.29 MiB的尺寸包。
本地仓库位于CentOS 6.5系统上。git版本为1.8.5.3。
问题
- 为什么将450MB的文件移出仓库后,本地仓库的大小只减少了90MB?
- 即使有这个小的减少,为什么它也没有推送到Bitbucket的远程仓库中?
- 远程仓库的大小怎么会从973MB跳到2.3GB?
- 我该如何修复?即使使用--force标志进行推送,我也无法向远程仓库推送。任何推送都会给我带来错误消息“conq: repository is in read only mode (over 2 GB size limit).fatal: Could not read from remote repository.”