本日はGitのトラブルシューティングです。
先日GitHubで新しいリポジトリを作成し、ブランチを切りデータをPushしようとした際に以下のようなエラーが発生しました。

$ git push --set-upstream origin HoloMoto/Fixdata Enumerating objects: 307, done. Counting objects: 100% (307/307), done. Delta compression using up to 20 threads Compressing objects: 100% (302/302), done. error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 send-pack: unexpected disconnect while reading sideband packet Writing objects: 100% (306/306), 8.31 GiB | 18.87 MiB/s, done. Total 306 (delta 18), reused 0 (delta 0), pack-reused 0 (from 0) fatal: the remote end hung up unexpectedly Everything up-to-date
このログからは最終的にEverything up-to-dateと出ているため 無事にPush出来ているように思えますが、GitHub側ではリポジトリが上がってきていません。
エラーからは単にネットワークなどを疑いますが、実際のところは一度にPushするデータが多きすぎることが原因です。
実際に8.31 GiB をPushしようとしています。
fatal: the remote end hung up unexpectedlyというエラーは、Gitのデフォルトのバッファサイズを超えた場合に発生することがあります。
このバッファーサイズを超える場合はこのエラーが出てPushが失敗してしまいます。
git configコマンドでPushするバッファサイズを変更することができ、以下のようなコマンドで行います。
git config --global http.postBuffer 524288000
この場合は500MBまでバッファサイズが拡張されPushができます。
しかし今回の場合は一度に大量のデータをPushしようとしたことが原因であり、回避法は何度かに分けてデータをPushするということが最善手であると考えられます。
本日は以上です。