【Git】push 時に fatal: the remote end hung up unexpectedly が出たときの対応
2020年7月29日
今回 Git から push したときに出くわしたエラーと対応です。
更新ファイルには巨大なものも多く ギガクラスの push でのエラーでした。
push 後の Write の途中で同じタイミングで以下のエラーが出て中断しました。
fatal: the remote end hung up unexpectedly
fatal: sha1 file '<stdout>' write error: Broken pipe
fatal: the remote end hung up unexpectedly
以前 サーバーのメモリ(8G)が足りなくなって push できなくなることがあったので top を使って メモリを監視しながら push してましたがメモリは全然余裕です。
その他にファイルサイズ制限もかけていない環境です。
どうやらクライアント側の問題のようで こちら を参考に対応して成功しました。
ssh で転送する際に ファイルが大きすぎると クライアントが時間がかかって timeout してしまうのが原因のようなので、定期的に ping を送るように設定します。
クライアントは Windows なので
[Gitのインストールフォルダ]/Git/etc/ssh/ssh_config
を編集します。
保護されているファイルなので 一旦デスクトップ 辺りにコピーして 編集します
次のセクションを追加します。
Host *
ServerAliveInterval 30
ServerAliveCountMax 4
編集後もとにあった場所に戻して 再度 git push します。
意味は 30 秒ごとに 4回 ping 送るので 30×4=120秒 信号来なかったら timeout 扱いにしてね。というものです。たぶん