说明
Git非常擅长处理小型文本文件,因为它可以有效地存储它们及其更改。同时,git对于二进制文件非常不利,并且会天真的存储文件的单独副本(至少默认情况下)。正如您所观察到的,存储库变得巨大,然后又变慢。
这是DVCS中的一个常见问题,每次克隆时您都会下载每个文件的每个版本(“整个存储库”),这一事实使情况更加恶化。Kiln的家伙正在开发一个插件,以将这些大文件更像Subversion,后者仅按需下载历史版本。
解
该命令将列出当前目录下所有文件,文件大小> = 5MB。
find . -size +5000000c 2>/dev/null -exec ls -l {} \;
如果要从存储库的整个历史记录中删除文件,则可以将此想法与git filter-branch历史记录一起使用,并摆脱大文件的所有痕迹。完成此操作后,存储库的所有新克隆都将变得更精简。如果要精简存储库而不进行克隆,请在手册页上找到说明(请参见“收缩存储库清单”)。
git filter-branch --index-filter \
'find . -size +5000000c 2>/dev/null -exec git rm --cached --ignore-unmatch {} \;'
警告:这将使您的存储库与其他克隆不兼容,因为树和索引已签入不同的文件;您将无法再从中推拉。
git-bigfiles项目中的git