HOWTO · Git

Git サブモジュールのリスト

この記事では、Git サブモジュールがどのように機能するかについて説明します。

このページの内容

この記事では、Git サブモジュールについて説明します。それらが何であるか、サブモジュールが果たす目的、および一般的なワークフローについて説明します。

Git サブモジュールを使用すると、あるリポジトリを別のリポジトリのサブディレクトリとして保持できます。簡単に言うと、サブモジュールは特定の時間枠での他のリポジトリへの参照です。

Git サブモジュールとは何ですか

上記の説明で問題が解決しなかった場合は、これで解決するはずです。

Git サブモジュールは、別のリポジトリのコミットを参照するホストリポジトリのレコードに例えることができます。一般に、サブモジュールは静的であり、指定されたコミットを追跡します。

それらはブランチまたは参照を追跡せず、変更がホストリポジトリにプッシュされても更新されません。

Git は、リポジトリにサブモジュールを作成するたびに .gitmodules ファイルを作成します。このファイルには、サブモジュールのメタデータとリポジトリとのマッピングが含まれています。

複数のサブモジュールを作成すると、複数の gitmodules ファイルが作成されます。

Git サブモジュールを作成する

私たちが自分自身に問いかけなければならない最初の質問は、いつサブモジュールを作成すべきかということです。

Git サブモジュールを作成するのが最適なシナリオを次に示します。

  1. サブプロジェクトまたは外部コンポーネントが急速に変化する場合は、コードを特定のコミットにロックするのが最善です。API を壊す可能性のある今後の変更が予想される場合も、同じことが当てはまります。
  2. コンポーネントをベンダーの依存関係として追跡する場合。これは通常、特定のコンポーネントを定期的に更新していない場合に発生します。
  3. 特定の時間にサードパーティからの変更を統合したい場合。頻繁に更新しない場合に最適に機能します。

サブモジュールの一般的な Git コマンド

コマンドラインでいくつかの一般的な使用オプションを見てみましょう。

Git サブモジュールを追加する

git add submodule コマンドを使用して、ホストリポジトリに新しいサブモジュールを作成します。Git サブモジュールを作成するときの典型的なワークフローは次のとおりです。

$ git submodule add <Repo URL>

git submodule add コマンドには、リポジトリを指す URL パラメータが必要です。Git はサブモジュールのクローンを作成し、git status コマンドを実行して新しいリポジトリの状態を確認できます。

例を見てみましょう。Delftscopetech リポジトリにサブモジュールを追加しましょう。

git submodule add コマンド

これで、以下に示すように git status コマンドを実行できます。

$ git status

git status コマンド

上記のように、.gitmodules と Learn-Submodules の 2つの新しいファイルがあります。ファイルを追加して変更をコミットできます。

git submodule init

git submodule init コマンドを実行して、サブモジュールのマッピングを .gitmodules ファイルからローカル構成ファイルにコピーします。リポジトリにいくつかのサブモジュールがある場合、それはうまくいきます。

Git のサブモジュールを一覧表示する

git submodule init コマンドは、.gitmodules ファイルに依存しています。同じファイルに依存することで、すべてのサブモジュールのリストを表示できます。

まず、ファイルを解析する必要があります。私たちは走る:

$ git config --file .gitmodules --name-only --get-regexp path

次に、実行できます。

$ git config --file .gitmodules --get-regexp path | awk '{ print $2 }'

上記のコマンドは、リポジトリに存在するサブモジュールへのパスを表示します。