履歴の多いリポジトリはクローンに時間がかかる

Gitでリポジトリをクローンする際、履歴が多いと取得に時間がかかる。

必要なコミット数だけ取得する場合は--depthを指定する。

git clone --depth 1 https://github.com/owner/repo.git

--depth付きでクローンしたリポジトリでも、あとから取得する履歴を増やせる。

git fetch --depth 200 origin main

既存の深さに対して追加で履歴を取得する場合は--deepenを使う。

git fetch --deepen 100 origin main

履歴制限を解除して通常の状態に戻す場合は--unshallowを使う。

git fetch --unshallow

ファイルを絞ってチェックアウトする

作業対象のディレクトリやファイルが限定されている場合はsparse-checkoutを使う。

--no-checkoutでクローンして、必要なパスだけ作業ツリーに展開する。

git clone --no-checkout https://github.com/owner/repo.git
cd repo
git sparse-checkout init --cone
git sparse-checkout set docs scripts
git checkout main

単一ファイルを対象にする場合は--no-coneを使う。

git sparse-checkout init --no-cone
git sparse-checkout set README.md config/app.yml
git checkout main

設定したパスを確認するには下記を実行する。

git sparse-checkout list

制限を解除して全ファイルを展開する場合は下記を実行する。

git sparse-checkout disable