GitHub doesn't permit pushes larger than 2 GiB, and you're trying to push 8.64 GiB. This is too large, and you need to push in smaller chunks.
If your data is entirely in one commit, then it's too big, and you need to split it up into multiple commits.
You can use something like this, adjusting the constants (30000, origin
, and main
) as appropriate for your circumstance.
git rev-list --reverse --all --not --remotes=origin | ruby -ne 'x ||=0; x += 1; print $_ if x % 30000 == 0;' | xargs -I{} echo git push origin +{}:refs/heads/temp
git push origin +main :refs/heads/temp
That will push the data incrementally to a branch called temp
, and then finally push the final value to main
, deleting temp
. If you have only a handful of commits, then you may want to change 30000 to something like 2 or even 1. This can also be done easily with Perl instead of Ruby, but that as left as an exercise for the reader.
Note that http.postBuffer
should generally not be used, according to the Git FAQ. The only reason this would have any functional benefit whatever is if GitHub or a proxy server between you and GitHub didn't properly speak HTTP/1.1 by not understanding chunked transfer encoding. GitHub certainly does not have that problem, and hopefully you're not using such a proxy (because lots of things would be very broken), so all you're doing by setting that is wasting lots of memory on every push. People who are telling you it fixes push problems are, unfortunately, generally simply wrong, and tend to think it works mostly because their particular push problem is intermittent.