我当前项目的git存储库,包含源代码和图像文件,大小约为1.2千兆字节。但是所有分支的实际文件大小只有大约205兆字节。
我是git的初学者,我想巨大的存储库大小是由在存储库中移动图像文件引起的。由于git不捕获移动的文件,因此它将图像存储在历史记录中的旧位置以及图像位于新位置。我不确定这是否会导致如此大的开销。
无论如何,如何在不丢失源代码文件历史的情况下减少存储库大小?我可以放弃图像文件的历史记录。
答案 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
内存不足。根据我的经验,将其设置为可用内存的一半或更少通常可以正常工作。