見出し画像

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の容量を大きくし過ぎてしまうことに問題があるため、定期的なメンテナンスを怠らないようにするとよいでしょう。

この記事が気に入ったらサポートをしてみませんか?