VSCodeからGitHubへ push したときに「Git: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400」が出て、通常の push が通らなくなりました。今回の環境では http.postBuffer の既定値(1MiB)が小さく、送信時に詰まっていたのが主因でした。postBuffer を引き上げたところ復旧できたので、この記事ではその手順を中心にまとめます。
忙しい人向け
今回の原因は、http.postBuffer の値が小さく、大きめの push データ送信時にHTTP 400になっていたことでした。 git config --global http.postBuffer 524288000 を設定し、再 push すると解消しました。
問題発生時のファイル構成(例)
my-repo/
├─ .git/
├─ src/
├─ docs/
│ └─ large-image.png
└─ README.md
上のように画像や生成物を含む構成では、push 時の送信データが大きくなり、環境によっては postBuffer 既定値の影響を受けることがあります。
発生環境
- OS: macOS
- Git: 2.50
- クライアント: VSCode + CLI
- リモート: GitHub(HTTPS)
1. この記事でわかること
http.postBufferが原因で HTTP 400 になるパターンpostBufferを引き上げる具体的な設定手順- 設定後に確認するポイント
- 必要なら戻す方法
2. 症状
git push origin main実行時にRPC failed; HTTP 400が出る- 小さな差分は通るが、変更量が多いと失敗しやすい
- 以前は成功していたのに、あるタイミングから突然失敗する
今回の環境では、送信サイズが増えたタイミングで再現しやすくなっていました。
3. 前提条件(この記事の対象範囲)
- HTTPS でリモート運用しているリポジトリ
RPC failed; HTTP 400が出て push だけ失敗する構成- 画像や生成物を含み、pushデータが大きくなりやすいケース
※ 社内プロキシ、WAF、SSO 制約がある場合は **環境依存の可能性** があります。
4. 原因
今回の主因は http.postBuffer でした。 http.postBuffer は HTTP 経由で push するときの送信バッファ設定で、既定値(1MiB)のままだと、環境によっては大きいデータ送信で失敗する場合があります。
- 変更量が増えて push データが大きくなった
postBuffer既定値のままで、送信時にHTTP 400が返るようになった
5. 対処手順
手順1: 現在の postBuffer を確認する
git config --global --get http.postBuffer
値が未設定なら既定値運用です。
手順2: postBuffer を引き上げる
git config --global http.postBuffer 524288000
手順3: 再 push する
git push origin main
手順4: 必要なら設定値を見直す
# 設定確認
git config --global --get http.postBuffer
# 元に戻す(未設定状態へ戻す)
git config --global --unset http.postBuffer

