431 文字
2 分

Q. git pushすると400エラーが発生する

2024-12-09

エラーが発生する状況#

プッシュを行うと次のようなエラーが発生する状況だった。

Terminal window
$ git push origin
error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly

直近のコミットを確認すると、サイズが非常に大きなファイルが含まれていたため、Git のデフォルトの制限に引っかかったのだろうと推測できる。

解決案 1. http.postBuffer を設定する#

http.postBufferを変更することで、大きなファイルでも push できるようになる。

現在の値は次のコマンドで確認できる。何も表示されなければデフォルト値の 1M が適用されている。

Terminal window
git config --get http.postBuffer

これを適当な値に変更すればいい。

Terminal window
git config http.postBuffer 2M

調べていると、--globalオプションを付けて設定しないと上手くいかなかったという報告が見られるが、今回問題が発生した方の環境では問題がなかった。

Terminal window
git config --global http.postBuffer 2M

解決案 2. ファイルを圧縮する#

ファイルを圧縮して問題ないのであれば、圧縮するのも一つの手段だと思われる。

あまりにも大きなファイルが多いと git clone などに時間がかかるようになるため、適切なファイルサイズに抑えることは望ましい。

解決案 3. Git LFS を利用する#

Git LFS は、実際のファイルではなくファイルへの参照を保存することで大きなファイルを扱う Git の拡張のようなシステム。

Github でも Git LFS は利用できる。

https://docs.github.com/ja/repositories/working-with-files/managing-large-files/about-git-large-file-storage

Git LFS の使い方は公式サイトが詳しい。

https://git-lfs.com/

Q. git pushすると400エラーが発生する
https://blog.ohirunewani.com/posts/q-git-400-error/
作者
hrdtbs
公開日
2024-12-09
ライセンス
CC BY-NC-SA 4.0