Gitのcloneが上手くいかない時
VSCodeのターミナルやGithubからGitをcloneしようとした時、以下のようなエラー文が表示されcloneができない事象に陥ったことがありますでしょうか?
fatal: early EOF
fatal: The remote end hung up unexpectedly
fatal: index-pack failed
今回はこちらのエラー文の解消方法を考えていきたいと思います。
原因とは?
このエラー文はGitのリポジトリの容量が大きすぎることが原因となっています。大きすぎるがゆえに、cloneを途中で止め、タイムアウトしてしまっているのです。
解決方法は?
解決策として、Gitのhttp通信制限を増やすことや一度にcloneする量を減らすことが挙げられます。
Gitのhttp通信制限を増やす
こちらの解決策はSSHではなくHTTPでGitを使っている方限定となりますが、Git側の設定でPOSTバッファサイズを大きくすることで解決することがあります。コマンド参考例は以下になります。
git config http.postBuffer 52428800
値はバイト単位で指定されており、デフォルトは1MB。上記の場合、バッファサイズは50MBに設定されています。
一度にcloneする量を減らす
こちらの解決策はGitのcloneの量を最初から全て落とそうとするのではなく、最新の履歴のみを先にcloneする方法です。コマンド参考例は以下になります。
git clone --depth 1 GitのURLを記載
無事にcloneが出来たのを確認したらcloneしたディレクトリに移動して以下のコマンドを入力してください。
git fetch --unshallow
オプション「unshallow」を実行することで残りの履歴をcloneすることが出来るので忘れずに実行するようにしましょう。まだ容量が大きすぎることが原因でエラーが表示されるようであれば、最初に実行したオプション「depth」で細かく段階的に履歴を取得してから残りの履歴を取得するとよいでしょう。コマンド参考例は以下になります。
git fetch --depth 2
git fetch --depth 3
git fetch --depth 4
git fetch --unshallow
最後に
いかがだったでしょうか。今回はGitの容量が大きいことが原因でcloneが上手くいかない場合の解決方法を挙げてみました。
段階的にGitを落とすことで解決しそうですが、大前提としてGitの容量を大きくし過ぎてしまうことに問題があるため、定期的なメンテナンスを怠らないようにするとよいでしょう。
この記事が気に入ったらサポートをしてみませんか?