好的,所以我在bitbucket上有这个远程存储库,并且在过去的6个月里我没有使用我的本地文件。现在,今天,经过大量的工作,我尝试提交并推送我错过的代码,操作需要超过30分钟,我取消因为它根本没有进展(卡在99%)。我感到很惊讶,因为它以前不是这样,而且几乎是即刻的。
我认为我的本地仓库在某种程度上被大量文件破坏了,决定运行bfg,并且它没有找到高于1MB的blob。
这是一个symphony2安装,其中排除了供应商文件夹。
这是一个持续的推动10分钟
Writing objects: 99% (532/533), 203.39 MiB | 249.00 KiB/s
我不知道该怎么做。有什么建议吗?
答案 0 :(得分:1)
本地尺寸与遥控尺寸无关
每次向git添加文件时(即使您没有提交它),也会生成SHA-1,文件存储在.git
文件夹中。
所以基本上你可以在.git
文件夹下拥有无限的数据存储空间。
您需要检查的是.pack
文件的大小。这是存储在git中的实际数据。所有内容都存储在那里。
如果您想减小尺寸并删除所有未使用的数据:
# The "expire" subcommand prunes older reflog entries.
# Entries older than expire time
git reflog expire --all --expire=now
# clean and re-pack the repository
git gc --aggressive --prune=now
这将删除您的回购下的所有过期内容,并将重新打包您的包文件。
在某些情况下,您有多个包文件,这也会优化它们。
--aggressive
通常git gc运行速度非常快,同时提供良好的磁盘空间利用率和性能。
此选项将导致git gc更积极地优化存储库,但代价是花费更多时间。这种优化的效果是持久的,所以这个选项只需要偶尔使用;每隔几百个变化集左右。
--prune=<date>
修剪早于日期的松散对象(默认为2周前,可由配置变量
gc.pruneExpir
覆盖)。--prune=all
修剪松散的物体,不论其年龄如何(除非你确切知道自己在做什么,否则不要使用--prune = all。除非存储库处于静止状态,否则您将丢失尚未使用refs锚定的新创建的对象,最终破坏您的存储库。 --prune默认开启。