Git
clone
初心者

リポジトリが大きすぎて落ちてこないときの対処法(自分用)

More than 1 year has passed since last update.


経緯

Gitのリポジトリが巨大すぎてcloneが終わりませんでした。

多分これから先もう一回ぐらいはこういった事にぶち当たりそうなので自分用に対処法を残しておきます。


対処法

ソースツリーでは実行中の状態が見られませんし、たぶんエラー吐いて終了します。(以前経験あり)

コマンドライン上でクローンしてみたところ

remote: Counting objects: 74152, done.

remote: Compressing objects: 100% (36905/36905), done.
ceiving objects: 4% (2981/74152), 780.00 KiB | 76.00 KiB/s

電波のアレもあるんでしょうが5分経って4%しか進みませんでした。

さすがに一時間以上も待ってられません。

(ちなみに私はこのタイミングで [Ctr] + [C] を押しました。)

そこで--depthオプションを使います。

最初はdepth 1 で落とす。

$ git clone --depth 1 https://hogehoge.com/fuga.git

すると

remote: Counting objects: 8791, done.

remote: Compressing objects: 100% (6122/6122), done.
remote: Total 8791 (delta 3110), reused 7578 (delta 2347)
Receiving objects: 100% (8791/8791), 59.64 MiB | 911.00 KiB/s, done.
Resolving deltas: 100% (3110/3110), done.
Checking out files: 100% (10687/10687), done.

リポジトリにもよりますがオブジェクトの数が8分の1くらいになりました。

これでも結構時間かかってしまったのですが終わらないことはなかったです。

あとはひたすら差分を取る。

$ git fetch --depth 10

$ git fetch --depth 50 # ここの値は要調整。サイズにもよりますが50~100くらいが良いかと思います。
...
$ git fetch --unshallow # これで完全なリポジトリになる。


参考ページ

こちらの記事を参考にさせていただきました。

https://qiita.com/butchi_y/items/cc0fe50acc47c1e3ab32