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