Gitを使用して大規模なリポジトリを扱う際、すべてのファイルをチェックアウトする必要がない場合があります。例えば、リポジトリが膨大なファイル数を持つプロジェクトの場合、特定のディレクトリやファイルだけを取り扱いたいこともあるでしょう。
そのようなケースで便利なのが、Gitバージョン2.25から導入された「git sparse-checkout」です。この機能を利用することで、必要な部分だけを効率的にチェックアウトできます。
本記事では、git sparse-checkoutの基本的な使い方について、具体的なコマンド例を交えながら説明していきます。
前提
「git sparse-checkout」は、Gitバージョン2.25(2020年1月13日リリース)から利用できる機能です。このバージョン以降のGitを使用していることが前提になります。まずは、Gitのバージョンを確認しましょう。
git --version
git sparse-checkoutの手順
基本的な手順
1. リポジトリをクローンする
通常のgit cloneではなく、–no-checkoutオプションを使ってクローンします。このオプションにより、すぐにファイルをチェックアウトせず、後で必要な部分だけを取得することが可能です。
git clone --no-checkout リポジトリURL
2. sparse-checkoutを初期化する
次に、git sparse-checkout initを実行して、sparse-checkoutを有効化します。このコマンドにより、部分チェックアウトの設定が可能になります。
git sparse-checkout init
3. 必要なフォルダだけをチェックアウトする
特定のフォルダだけをチェックアウトするには、以下のコマンドを使います。フォルダパス
には、チェックアウトしたいディレクトリのパスを指定します。
git sparse-checkout set フォルダパス
複数のフォルダを指定したい場合は、以下のようにスペースで区切ってフォルダパスを指定します。
git sparse-checkout set フォルダパス1 フォルダパス2
4. 現在のチェックアウト対象を確認する
現在設定されているsparse-checkoutの対象を確認するには、以下のコマンドを使用します。
git sparse-checkout list
5. ブランチをチェックアウトする
最後に、必要なファイルだけを含んだ状態でブランチをチェックアウトします。通常はmainブランチを指定しますが、任意のブランチ名を指定することも可能です。
git checkout main
チェックアウト対象を変更する
すでにチェックアウトしたフォルダとは異なるフォルダを新たに設定することも可能です。以下のようにコマンドを再実行し、別のフォルダパスを指定してください。
git sparse-checkout set 新しいフォルダパス
※解除コマンドや追加コマンドがあるわけではありません。
sparse-checkoutを停止する
部分チェックアウトを停止し、リポジトリ全体をチェックアウトしたい場合は、以下のコマンドを使用します。このコマンドを実行すると、全てのファイルがチェックアウトされます。
git sparse-checkout disable
補足:リモートリポジトリのフォルダを確認する方法
リモートリポジトリにどのようなフォルダがあるかを確認するには、以下のコマンドを使用します。このコマンドは、指定したブランチ(例:main)のディレクトリ構造をリスト表示します。
git ls-tree -d -r --name-only main
指定フォルダ以下のフォルダを確認する場合:
git ls-tree -d -r --name-only main /src/driver
コメント