Gitのリモートリポジトリにpush
するときに次のようなエラーが発生して失敗してしまうことがあります。
error: unable to rewind rpc post data - try increasing http.postBuffer
error: RPC failed; curl 56 LibreSSL SSL_read: Connection reset by peer, errno 54
send-pack: unexpected disconnect while reading sideband packet
私の場合は、AWSのCodeCommitにpush
するときにこのエラーが起きました。対策方法は2通りあります。
対応方法1: http.postBufferを増やす
シェルに出力されている通りにhttp.postBuffer
の値を増やすという方法です。次のようにします。
git config --global http.postBuffer 524288000
値については環境によって異なると思いますが、とりあえず大きいすれば良いはずなので大きめの値を指定します。
この方法で直る場合もあるようですが、私の場合はこの方法では直りませんでした。
対応方法2: 接続プロトコルを変更する
シェルに出力されているエラーを見るとhttp
の転送時の転送容量が問題になっているようです。Gitはhttps
の他にssh
による接続にも対応しています。ssh
で接続するには次の手順で行います。
ssh
で接続するには接続するアカウントのssh
の公開鍵をサーバーに登録します。
git remote set-url
を使ってURLをssh
接続のURLに変更します。
git remote set-url origin ssh://URL_TO_REPOSITORY
git remote -v
でURLを確認します。通常はfetch
とpush
両方ともSTEP 2で変更されますがpush
だけ変わらないことがあります。その場合は次のようにしてpush
用のURLも変更します。
git remote set-url --push origin ssh://URL_TO_REPOSITORY
私の場合は対応方法2のssh
に変更するという方法で解決でき、正常にpush
できるようになりました。