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

Git 如何在不丢失任何源代码文件历史记录的情况下减小存储库的大小?,git,repository,history,filesize,image-file,Git,Repository,History,Filesize,Image File,我当前项目的git存储库包含源代码和图像文件,大小约为1.2GB。但所有分支的实际文件大小仅为205 MB左右 我是git的初学者,我猜巨大的存储库大小是由在存储库中移动图像文件引起的。由于git不捕获移动的文件,因此它将图像存储在历史记录中的旧位置,并将图像存储在新位置。我不确定这是否会造成这么大的开销 无论如何,如何在不丢失源代码文件历史记录的情况下减少存储库的大小?对我来说,释放图像文件的历史记录是可以接受的。Git不会存储移动或复制的文件的额外副本。如果内容相同,git存储的唯一内容就是

我当前项目的git存储库包含源代码和图像文件,大小约为1.2GB。但所有分支的实际文件大小仅为205 MB左右

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


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

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

有关Git对象模型的详细信息:

git-gc
是对存储库进行常规内部管理的常用方法,尝试一下,看看您的存储库是否缩小了

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

git重新打包-adf--window=250--depth=250--window memory=1024M


注意
--窗口内存
选项;如果您的机器有足够的内存,您可能不使用此选项就可以离开,但如果没有,它应该可以防止git repack因内存不足而失败。根据我的经验,将其设置为可用内存的一半或更少通常效果良好。

git gc命令至少释放了400兆字节。使用另一个命令,我的
2048M
1024M
内存不足,但我的机器上安装了4GB的ram。没有其他资源关键型任务正在运行。你有什么想法吗?看来
git-gc
效果不错。也许
git-repack
不会做得更好。但您可以尝试使用这些值进行实验,然后查看。更低的
——窗口内存
甚至更多;如果仍然失败,请尝试降低其他选项。您是对的,使用lover
window
depth
值,它继续运行,但没有明显的增益。