所以目前我有一个似乎非常复杂的问题,我需要一些帮助来解决它,而不能将二进制文件移动到 CDN / Dropbox 等。在评估这个问题时,请注意删除图像 / pdf 等并放置不幸的是,它们在保管箱或其他一些外部存储中不是一种选择。
所以当前的问题是我有几百个存储库,每个存储库都有几千个提交,每个存储库通常有 3 个分支。在我的一个测试存储库中,如果我对存储库执行 du -sh,它的大小约为 13gb。其中工作目录的大小约为 800mb。因此,到目前为止,我为减小尺寸所做的尝试如下:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch path/to/largest/files.pdf" HEAD
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
git gc --prune=now --aggressive
git repack -a -d --depth=250 --window=250
在 du -sh 上的存储库目录上方的所有测试之后,仍然显示它的大小为 13GB。所以我的下一个想法是删除所有二进制文件历史记录(jpg / pdf / png 等),但只保留二进制文件的最新版本。但是我不确定如何做到这一点,我可以做一个 for i in find -name "*.pdf"
; 例如,做 git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $i" HEAD,但我不确定这是否是最好的处理方式永远完成所有不同的资产类型。
这里的主要目标是通过仅在历史记录中保留二进制文件的 1 个修订版来减小大小,以便包文件的大小更小,也可以删除历史记录中所有以前删除的二进制文件,我对此 100% 满意,但也不确定如何以自动化方式做到这一点。
任何帮助,将不胜感激。