git sparse-checkoutで一部のファイルだけをチェックアウトする
目次
git sparse-checkoutを使うと、リポジトリの一部だけをチェックアウトできる1。使い方は簡単だ。次のようにコマンドを打つと、DIR1とDIR2だけをチェックアウトできる。ちなみにGitのバージョンは2.37.3である。
git sparse-checkout set DIR1 DIR2
さらにディレクトリを追加したいときは、addコマンドを使う。
git sparse-checkout add DIR3
sparse-checkoutを無効化したいときは、disableコマンドを使う。
git sparse-checkout disable
.git\info\sparse-checkout
ファイルにチェックアウトするディレクトリのリストがある。
coneモードとnon-coneモード #
sparse-checkoutにはconeとnon-coneの2つのモードがある。標準ではconeモードが有効になっている。non-coneモードに切り替えるには--no-cone
オプションをつける。
coneモードとnon-coneモードでは、チェックアウトするファイルを指定する方法が異なる。coneモードはディレクトリによる指定であり、non-coneモードはパターンによる指定である。setやaddで入力した文字列は、coneモードではディレクトリのリストとして、non-coneモードではパターンのリストとして扱われる2。
non-coneモードのパターンは.gitignoreファイルと同じ文法だ。例えば次のようにすれば、ルートのDIR1フォルダにある.mdファイルだけをチェックアウトする。
git sparse-checkout set '/DIR1/*.md' --no-cone
基本的にconeモードを使うべきである3。通常はディレクトリを指定するだけで十分だからだ。non-coneモードでは、パターンによって複雑なファイルの指定ができる。しかし負荷が高くなったり、パターン指定のミスが起こるといった欠点もある。
coneモードではルートにあるファイルは常にチェックアウトされる4。ルートのファイルを除外したい場合はnon-coneモードを使う。
initは非推奨に #
initというコマンドもあったが、非推奨になった5。特に使う必要はない。