メインコンテンツへスキップ

git sparse-checkoutで一部のファイルだけをチェックアウトする

··2 分

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。特に使う必要はない。

参考 #