Q. git pushすると400エラーが発生する
エラーが発生する状況
プッシュを行うと次のようなエラーが発生する状況だった。
$ git push originerror: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400send-pack: unexpected disconnect while reading sideband packetfatal: the remote end hung up unexpectedly直近のコミットを確認すると、サイズが非常に大きなファイルが含まれていたため、Git のデフォルトの制限に引っかかったのだろうと推測できる。
解決案 1. http.postBuffer を設定する
http.postBufferを変更することで、大きなファイルでも push できるようになる。
現在の値は次のコマンドで確認できる。何も表示されなければデフォルト値の 1M が適用されている。
git config --get http.postBufferこれを適当な値に変更すればいい。
git config http.postBuffer 2M調べていると、--globalオプションを付けて設定しないと上手くいかなかったという報告が見られるが、今回問題が発生した方の環境では問題がなかった。
git config --global http.postBuffer 2M解決案 2. ファイルを圧縮する
ファイルを圧縮して問題ないのであれば、圧縮するのも一つの手段だと思われる。
あまりにも大きなファイルが多いと git clone などに時間がかかるようになるため、適切なファイルサイズに抑えることは望ましい。
解決案 3. Git LFS を利用する
Git LFS は、実際のファイルではなくファイルへの参照を保存することで大きなファイルを扱う Git の拡張のようなシステム。
Github でも Git LFS は利用できる。
Git LFS の使い方は公式サイトが詳しい。