目前我遇到了一个非常棘手的问题,需要一些帮助来解决它,但是不能将二进制文件移动到CDN/dropbox等地方。请注意,在评估此问题时,请勿删除图像/pdf等内容并将其放入dropbox或其他外部存储中。
所以当前的问题是,我有几百个存储库,每个存储库有几千个提交,通常每个存储库有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"
; do
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $i" HEAD
done 然而,我不确定这是否是最佳方法,因为这可能需要很长时间来完成所有不同类型的资产。本次操作的主要目标是通过仅保留二进制文件的1个版本来减小大小,以使pack文件更小。之前已删除的历史二进制文件也可以被移除,我完全同意这一点,但也不确定如何以自动化的方式实现。如有帮助将不胜感激。