git本地存储库大小和子文件夹大小太不同了

时间:2017-03-31 13:52:53

标签: git github

我是git和github的新手,我对github存储库的大小有一些疑问:

我在github上的存储库的大小是38M

本地存储库目录的大小为42.1M

我的问题是为什么本地存储库中所有子目录的大小为3.06M

我试图通过git gc来解决,但没有成功,我甚至怀疑这是否是一个问题,不知道,有人知道这个吗?感谢。

1 个答案:

答案 0 :(得分:0)

工作树相对于仓库中数据库大小的大小可能因多种原因而有所不同。

一方面,使用增量对存储库进行打包,压缩和优化。另一方面,这些技术的有效性因内容而异,而repo包含您的所有历史记录,而您的工作树只包含一个版本(在任何给定时间)。

关于gc,它主要做的是从repo中删除无法访问的对象。例如,如果您在分支上工作一段时间,可能会添加一些大型二进制资产,但稍后将其删除;然后你以一种新的历史记录根本不显示大型二进制资产的方式重新分支分支......好吧,最终gc应该消除原始提交和大型二进制资产,回收一些空间。

但是“无法访问”不仅意味着没有裁判可以达到它,而且还意味着 reflog 无法达到它。如果你想确定你收回所有未使用的空间(并且你确信你不需要从reflog中恢复任何东西)那么你可以清除reflog然后运行一个“激进的”gc。

除此之外......理论上消除reflog 就像

一样简单
git reflog expire --expire=now

但是我看到这个删除reflog条目失败了,我真的不知道为什么。可以删除实际的日志文件(例如在bash中使用rm),但要小心;如果你有任何藏匿处,它们也会记录在.git / logs下,你可能不想破坏它们。

您是否使用LFS还可能会影响回复(在.git文件夹中测量)到工作树的相对大小。我不确定如何在github的大小报告中反映LFS存储。

如果你用gc收回了所有的空间,并且LFS不是一个因素,那么我认为10:1的比例对我来说似乎很惊讶;但是如果你的历史记录中有很多二进制文件发生了变化,那么它就不会超出可能性范围。