Git リポジトリのサブディレクトリのクローン
このチュートリアルでは、Git リポジトリのサブディレクトリを複製する方法を説明します。
バージョン制御システムである Git は、プロジェクトディレクトリに対して行われた変更の履歴を維持します。典型的なプロジェクト開発環境では、さまざまなプロジェクトモジュールをさまざまなサブディレクトリに分離します。
その場合、特定のプロジェクトモジュールサブディレクトリのみをチェックアウトまたはクローン化できます。このような目的で、Git が提供する sparse-checkout
機能を使用できます。
これを例を挙げて説明します。
Git のリポジトリ内のサブディレクトリのクローンまたはチェックアウト
Git は、プロジェクトディレクトリ内のファイルに加えられた変更を追跡するために、共同開発環境で使用されます。プロジェクト開発環境のメインプロジェクトディレクトリ内の別々のサブディレクトリに、さまざまなプロジェクトモジュールを保持します。
Git リポジトリはこのメインプロジェクトディレクトリを追跡するため、プロジェクトディレクトリ全体を複製またはチェックアウトできます。通常、大規模なプロジェクトでは、さまざまなチームがさまざまなプロジェクトモジュールで作業します。
したがって、このような場合、プロジェクトディレクトリ全体をチェックアウトする必要はありません。特定のチームが取り組んでいるプロジェクトモジュールサブディレクトリのみを複製するだけで十分です。
プロジェクト Git リポジトリのサブセットである特定のサブディレクトリ(つまり)のみをクローン化することは、スパースチェックアウト
と呼ばれます。スパースチェックアウト
では、Git リポジトリのプロジェクトディレクトリから必要なサブディレクトリのみをチェックアウトできます。
my_project
という名前のプロジェクトディレクトリがあるとします。プロジェクトディレクトリ my_project
には、frontend
、backend
、documentation
などの名前のさまざまなモジュールのサブディレクトリがあります。
frontend
モジュールサブディレクトリをチェックアウトまたはクローン化するだけです。したがって、最初に、次のようにリポジトリ用のディレクトリを作成します。
$ mkdir my_project
$ cd my_project
プロジェクトディレクトリを作成したら、次のように Git リポジトリを初期化し、リモート URL を追加します。
$ git init
$ git remote add -f origin https://github.com/johndoe/my_project.git
メインプロジェクトディレクトリのサブディレクトリのみをチェックアウトまたはクローン化するには、スパースチェックアウト
を有効にする必要があります。
git config
コマンドを使用して同じことを実現できます。次のように git config
コマンドを使用する必要があります。
$ git config core.sparsecheckout true
これで、チェックアウトするサブディレクトリを Git に伝えることができます。
したがって、frontend
サブディレクトリのチェックアウトのみを有効にするには、.git/info/sparse-checkout
ファイルにリストする必要があります。
$ echo "frontend/" >> .git/info/sparse-checkout
これで、リモート Git リポジトリからファイルをフェッチできます。
$ git pull origin master
これで、作業ツリーには、メインプロジェクト my_project
の frontend
サブディレクトリのみが含まれます。
したがって、Git 内の Git リポジトリの特定のサブディレクトリのみを複製またはチェックアウトする方法を学習しました。
詳細については、次の Web サイトをご覧ください。