git sparse-checkout を無効にするには
git で一部のディレクトリ・ファイルのみを同期するとき sparse-checkout という機能を使います。有効にする方法は過去の記事を参照ください。
今回は sparse-checkout を無効にしてすべてのオブジェクトをチェックアウトしたいときの方法を紹介します。
前提
下記のようにして hoge/ のみをチェックアウトしている状態を仮定します。
git init
git remote add origin リポジトリのURL
git config core.sparsecheckout true
echo hoge/ > .git/info/sparse-checkout
git pull origin mastersparse-checkout の解除方法
結論から書くと sparse-checkout を無効にするには下記のコマンドを順に叩きます。
echo "/*" > .git/info/sparse-checkout
git read-tree -mu HEAD
rm .git/info/sparse-checkout
git config core.sparsecheckout false流れは下記のとおりです。
.git/info/sparse-checkoutに全体を対象とするよう/*を指定するgit read-treeでツリー情報を読み込み直す.git/info/sparse-checkoutを削除sparsecheckoutを無効にする
git read-tree の詳細は下記を参照してください。
Git 2.26 以降で git sparse-checkout コマンドが使える場合
sparse-checkout の有効化
Git 2.26 以降の場合、専用の git sparse-checkout コマンドが用意されています。執筆時点での最新のバージョンは 2.26.2 でした。
冒頭の
git init
git remote add origin リポジトリのURL
git config core.sparsecheckout true
echo hoge/ > .git/info/sparse-checkout
git pull origin masterと同じように sparse-checkout を設定するには、下記のようになります。
git init
git remote add origin リポジトリのURL
git sparse-checkout init
git sparse-checkout set hoge/
git pull origin masterほとんど変わりません。見た目は少しわかりやすくなったかな、程度ですかね。
sparse-checkout の無効化
しかし、無効にするときは disable を指定するだけなので、かなり簡潔になります。
git sparse-checkout disableこれだけです。 git read-tree をする必要がありません。
Git 2.26 以降では git sparse-checkout コマンドを使うのがよいでしょう。
ちなみに disable では .git/info/sparse-checkout は削除されませんので再度 init で有効にすれば、元の sparse-checkout の設定に戻すことができます。
その他
git sparse-checkout コマンドでは .git/info/sparse-checkout を直接編集しなくても、コマンドで対象パスの確認・変更・追加ができます。
add, set でも git read-tree は自動的に行われますので、これ以外にコマンドを実行する必要がありません。
確認
git sparse-checkout list現在設定されている .git/info/sparse-checkout の内容が表示されます。
追加
git sparse-checkout add piyo/元々指定していたパスに加えて、指定したパスが追加されます。
変更
git sparse-checkout set piyo/元々の設定が消えて、指定したパスのみが設定されます。




