git submodule コマンド

Git 基本操作Git 基本操作


git submoduleこのコマンドは、他の Git リポジトリを含むプロジェクトを管理するために使用します。

git submoduleこのコマンドは、大規模なプロジェクトや、外部ライブラリをプロジェクトに統合する必要がある場合に非常に便利です。サブモジュールを使用することで、外部ライブラリをメインリポジトリに直接マージすることなく、プロジェクトの一部として管理できます。

使用詳細

1. サブモジュールの初期化

git submodule init

このコマンドは、設定ファイル内のすべてのサブモジュールを初期化します。.gitmodules ファイルの情報に基づいてサブモジュールの URL とパスを設定しますが、サブモジュールのコンテンツはダウンロードしません。

一般的な使い方:サブモジュールを含むリポジトリをクローンした後、このコマンドを実行してサブモジュールを初期化します。

git clone <repo-url>
cd <repo-dir>
git submodule init

2. サブモジュールの更新

git submodule update

このコマンドは、サブモジュールのリモートリポジトリからサブモジュールのコンテンツを取得し、.gitmodules ファイルで指定されたコミットに更新します。

一般的な使い方:サブモジュールを初期化した後、またはサブモジュールのコンテンツを更新する必要があるときに、このコマンドを実行します。

git submodule update

3. サブモジュールの追加

git submodule add <repo-url> [<path>]

このコマンドは、指定した Git リポジトリをサブモジュールとして現在のリポジトリに追加します。

<repo-url>はサブモジュールのリポジトリアドレス、<path>はサブモジュールのメインリポジトリ内のパスです(オプション。指定しない場合、デフォルトでサブモジュールのリポジトリ名がパスとして使用されます)。

一般的な使い方:外部ライブラリをサブモジュールとしてプロジェクトに追加します。

git submodule add https://github.com/example/libfoo.git libfoo

4. サブモジュールの削除

git submodule deinit [<path>]
git rm [<path>]
  • git submodule deinit <path>:サブモジュールを.git/configファイルから削除し、サブモジュールディレクトリ内のファイルを削除します。
  • git rm <path>:サブモジュールの参照をメインリポジトリから削除し、変更をコミットします。

一般的な使い方:メインリポジトリからサブモジュールを削除します。

git submodule deinit libfoo
git rm libfoo
rm -rf .git/modules/libfoo
5. サブモジュールの一覧表示
git submodule

現在のリポジトリ内のすべてのサブモジュールと、そのコミットハッシュおよびパスを一覧表示します。

一般的な使い方:プロジェクト内のすべてのサブモジュールの状態を確認します。

git submodule

6. すべてのサブモジュールの更新

git submodule update --recursive --remote
  • --recursive:すべてのサブモジュール(サブモジュールのサブモジュールを含む)を再帰的に更新します。
  • --remote:サブモジュールのリモートリポジトリから最新の変更を取得します。

一般的な使い方:サブモジュールが他のサブモジュールを含む場合、すべてのレベルのサブモジュールが最新バージョンに更新されるようにします。

git submodule update --recursive --remote

7. サブモジュールの状態確認

git submodule status

サブモジュールの現在の状態を表示します。現在のコミットハッシュとパス、未コミットの変更があるかどうかが含まれます。

一般的な使い方:サブモジュールの現在の状態を確認します。

git submodule status

Git 基本操作Git 基本操作

その他の拡張