【Git】sparse checkoutを利用して特定のディレクトリのみpullする方法

Gitのsparse checkoutを利用すると特定のディレクトリやファイルのみpullすることが可能になります。

手順

空のローカルリポジトリを作成


git init

sparse checkoutの有効化


git config core.sparseCheckout true

有効化されると.git/configsparseCheckout = trueが追加されます。


cat .git/config
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
sparseCheckout = true 

設定ファイルの作成


git sparse-checkout init

上記コマンドを実行すると.git/info/sparse-checkoutが作成されます。
このファイルで取得したいディレクトリやファイルを指定します。
.gitignoreと同じ構文が使用できます。


cat .git/info/sparse-checkout
/*
!/*/

デフォルトでルートにある全てのファイルを追加、ディレクトリを拒否しています。

取得したいディレクトリの追加


git sparse-checkout add /app/

viコマンド等で.git/info/sparse-checkoutを直接編集してもOKです。

リモートリポジトリの登録


git remote add origin git@github.com:usename/example.git

取得したいブランチ名を指定してpull


git pull origin main

参考