きょるに @kyoruni

ダッシュで奪取

チラシの裏

【Git】cloneが重いので最新の1件だけ欲しい

  • 普通に git clone すると、全ての履歴を持ってくる
  • 歴史が長いリポジトリが欲しい時は、ちょっと時間がかかるかも
  • 中身を覗いてみたいだけなら、最新版があれば十分

指定した数の履歴だけ持ってくる

$ git clone --depth {欲しい履歴の数}
最新のコミットだけ持ってくる

1件指定すると、最新版のみが取得できます。

$ git clone --depth 1 https://github.com/kyoruni/til.git

使ってみる

# 全部クローン
kyoruni: ~/projects$ git clone https://github.com/kyoruni/til.git til_clone_all
Cloning into 'til_clone_all'...
remote: Enumerating objects: 328, done.
remote: Counting objects: 100% (328/328), done.
remote: Compressing objects: 100% (307/307), done.
remote: Total 1166 (delta 189), reused 52 (delta 20), pack-reused 838
Receiving objects: 100% (1166/1166), 459.65 KiB | 462.00 KiB/s, done.
Resolving deltas: 100% (661/661), done.

# 最新1件だけクローン
kyoruni: ~/projects$ git clone --depth 1 https://github.com/kyoruni/til.git til_clone_1st
Cloning into 'til_clone_1st'...
remote: Enumerating objects: 98, done.
remote: Counting objects: 100% (98/98), done.
remote: Compressing objects: 100% (93/93), done.
remote: Total 98 (delta 0), reused 64 (delta 0), pack-reused 0
Unpacking objects: 100% (98/98), 52.80 KiB | 290.00 KiB/s, done.

→ 最新1件だけの方がめちゃくちゃ早かった(当たり前ですが!)

後から他の履歴も欲しくなったら
# 最新の5件まで持ってくる
$ git fetch --depth 5
やっぱり全部の履歴が欲しくなった
# 全部持ってくる
$ git fetch --unshallow

参考URL