Githubのpush時にHTTP 400エラーが発生したときの解決方法
スポンサーリンク

Githubエラー「HTTP 400 curl 22」発生時の対処法

Githubへのpushが「HTTP 400エラー」で突然できなくなってしまったときの解決方法

ヒーラー
Githubへのプッシュ実績のあるプロジェクトにおいて、突然プッシュができなくなってしまった。直前の変更が関係ある?

はじめに

開発しはじめたばかりのプロジェクトにおいて、githubにソースをpushすると、突然「HTTP 400」エラーが発生しました。

手元でのコミットは問題ありませんでしたので、プッシュ時に問題があるようです。
使用しているgithubのレポジトリへのプッシュは初回というわけではなく、何度か実績があったので、今回特別な問題があると推測されます。

エラーログは以下のとおりです。

git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/8z/lz1n016n0bqbnslwv7ppvsc00000gn/T/SourceTreeTemp.zE5P6b 

git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags --set-upstream origin refs/heads/main:refs/heads/main 
Pushing to https://github.com/organization_name/project_name
POST git-receive-pack (chunked)
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
Everything up-to-date
Completed with errors, see above

なお、git管理には「SourceTree」というツールを使用しており、今回のエラーログはそのツールでの出力です。

問題点

このときにコミットした変更点を振り返ると、画像を追加したり変更点が多く変更したファイルサイズも大きいということがいえます。

「Github HTTP 400 curl 22」のキーワードで調べてみると原因がわかりました。
結論からいうと、やはり一度にpushしようとしているファイルサイズが大きすぎることが原因でした。

あとからわかりますが、pushしようとしたファイル数は306ファイルで、ファイルサイズは18MBほどでした。

「この程度でエラーになってしまうの!?」と感じなくもありませんが、1度にプッシュできるファイルサイズはデフォルトで1MBです。かなり小さいですね。

なお、現在の設定がどうなっているかは、以下のコマンドで確認することができます。

git config --get http.postBuffer

これで何も出力されなかったらデフォルト値の1MBということです。

対処方法

実は手元の環境では、SourceTreeを使わずに、コンソールからpushしたら成功してしまいました。

% git push
Enumerating objects: 306, done.
Counting objects: 100% (306/306), done.
Delta compression using up to 8 threads
Compressing objects: 100% (255/255), done.
Writing objects: 100% (303/303), 18.44 MiB | 7.51 MiB/s, done.
Total 303 (delta 31), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (31/31), completed with 1 local object.
To https://github.com/organization_name/project_name
   5d6b060..aaa7ec8  main -> main

しかし、なぜ成功したかはわかっていません。

git config --get http.postBuffer

で確認しても出力はなくデフォルト値の1MBのままでした。

今後に向けて本質的な対策はしておきます。

解決方法は、このpostできるサイズの設定をデフォルト値から変更するということです。

例えば150MBに変更するのであれば、以下コマンドのように設定を変更します。

git config http.postBuffer 157286400

以下の書式でも可です。

git config http.postBuffer 150M

変更後、設定を確認してみると、きちんと150Mと出力されるようになっていました。

% git config --get http.postBuffer
150M

これで問題なくGithubにpushすることができるようになりました。

ちなみに、「SourceTree」の設定もきちんと書き変わっていることが確認できます。

SourceTree上の該当のプロジェクトを開いて、「設定」「高度な設定」と開き、ウィンドウ左下の「Config ファイルを編集...」ボタンをクリックすると、configファイルが開きます。

configファイルに「postBuffer = 150M」というように表示されていれば正しく設定されていることが確認できます。


著:大塚 弘記
¥2,781 (2025/06/01 17:23時点 | Amazon調べ)
スポンサーリンク

Twitterでフォローしよう

おすすめの記事