如何在不丢失任何源代码文件历史的情况下减小存储库的大小?

时间:2013-03-18 12:05:46

标签: git repository history filesize image-file

我当前项目的git存储库,包含源代码和图像文件,大小约为1.2千兆字节。但是所有分支的实际文件大小只有大约205兆字节。

我是git的初学者,我想巨大的存储库大小是由在存储库中移动图像文件引起的。由于git不捕获移动的文件,因此它将图像存储在历史记录中的旧位置以及图像位于新位置。我不确定这是否会导致如此大的开销。

无论如何,如何在不丢失源代码文件历史的情况下减少存储库大小?我可以放弃图像文件的历史记录。

1 个答案:

答案 0 :(得分:2)

Git不存储移动或复制的文件的额外副本。如果内容相同,那么git存储的唯一内容就是新的树结构。

Git对象模型的详细信息:http://git-scm.com/book/en/Git-Internals-Git-Objects

git gc是在存储库上定期管理的常用方法,请试一试并查看存储库是否缩小。

如果不这样做(有时git gc会阻塞,特别是在包含大量二进制数据的存储库中),请尝试使用git repack。这通常需要一段时间,但如果可能的话,它应该缩小存储库。试试这个:

git repack -adf --window=250 --depth=250 --window-memory=1024M

注意--window-memory选项;如果您的计算机有足够的内存,您可能会在不使用此选项的情况下离开,但如果不是,则应该阻止git repack内存不足。根据我的经验,将其设置为可用内存的一半或更少通常可以正常工作。