LoginSignup
11

More than 5 years have passed since last update.

posted at

Organization

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

経緯

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11