kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu Git その263 - 複数のリポジトリーを1つのリポジトリーで管理するサブモジュールとは・スーパープロジェクトとサブモジュール

サブモジュール(Submodule)

  「サブモジュール」とは、複数の「リポジトリー」を1つの「リポジトリー」で管理する仕組みです。


  「リポジトリー」の中に、別の「リポジトリー」を配置することができます。
  「リポジトリー」は入れ子構造になります。

  サブモジュールをどういう時に利用するか

    関連性が強いプロジェクトが複数の「リポジトリー」で管理されている場合、「サブモジュール」を利用して「リポジトリー」を一括管理することができます。

    複数の「リポジトリー」を1つの「リポジトリー」として管理できるため、「リモートリポジトリー」をクローンする側も、個別に「リモートリポジトリー」をクローンする必要がありません。

    複数のプロジェクトを1つのリポジトリーで管理している場合も、複数のリポジトリーに分割し、それらのリポジトリーを1つのリポジトリーとして管理できます。

    またユーザーは、クローンする「リモートリポジトリー」を選択することもできるため、必要な「リモートリポジトリー」のみクローンすることで、クローン及びチェックアウトにかかる時間を節約できます。

   もちろん、すべての「リモートリポジトリー」を一括してクローン及びチェックアウトすることも可能です。

スーパープロジェクトとサブモジュール

  「リポジトリー」を入れ子にするということは、「リポジトリー」には親子関係が成立します。


  この時、別の「リポジトリー」を配置する「リポジトリー」のことを、「スーパープロジェクト(Super Project)」といいます。

  一方、「リポジトリー」内に配置された「リポジトリー」のことを、「サブモジュール(Sub Module)」といいます。

リポジトリーの入れ子の入れ子

  「サブモジュール」内にさらに別の「リポジトリー」を配置できます。


  上記のように、何重にも「リポジトリー」を入れ子にして配置することができます。
  ただ、あまりやり過ぎると、管理が煩雑になり混乱の元になるため、注意してください。

  入れ子構造の親子関係

    上記のような「リポジトリー」の入れ子構造では、親子関係が以下のようになります。


    中央のリポジトリーは、一番上のリポジトリーから見ると「サブモジュール」になります。
    一方、一番下のリポジトリーから見ると、中央のリポジトリーは「スーパープロジェクト」になります。

サブモジュールの特徴

  「サブモジュール」の特徴です。

  リモートリポジトリー自身は入れ子にならない

    「サブモジュール」を利用することで、複数の「リポジトリー」を1つのリポジトリーとして扱えますが、「リポジトリー」自身は入れ子になりません。

    あくまで「リモートリポジトリー」への参照が入れ子構造になるだけであって、「サブモジュール」として追加した「リポジトリー」の「リモートリポジトリー」の構造は変化しません。


    別々に存在する「リモートリポジトリー」の関係を、「ローカルリポジトリー」内で入れ子構造で表現します。

    ですので、あるリポジトリーで「サブモジュール」として追加された「リモートリポジトリー」を、ユーザーは気にすることなく従来通りクローンし、「ローカルリポジトリー」で作業することができます。


  サブモジュールで行う作業は、サブモジュールのワーキングディレクトリーで行う

    ファイルの編集やコミットなど「ワーキングディレクトリー」で行う作業は、それぞれの「ワーキングディレクトリー」で行います。

    「スーパープロジェクト」で行う作業は「スーパープロジェクト」の「ワーキングディレクトリー」で作業を行い、「サブモジュール」で行う作業は「サブモジュール」の「ワーキングディレクトリー」で作業を行います。

  従ってコマンドを実行するカレントディレクトリーにある「ローカルリポジトリー」が現在の「ローカルリポジトリー」であり、操作対象の「ローカルリポジトリー」になります。

    また、pullやfetch、push等の作業も同様に、それぞれの「ワーキングディレクトリー」でコマンドを実行します。

  スーパープロジェクトからサブモジュールに対し、一括操作できる

    利便性のため、「スーパープロジェクト」からすべての「サブモジュール」に対し、同じ操作を行う機能が提供されています。


Git
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その74 - Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象
    Qt6 で構築されたアプリがクラッシュする現象 Chromium 系ブラウザーにより、Qt6 で構築されたアプリがクラッシュする現象が報告されています。
  • Ubuntu 24.04 その104 - Ubuntu 26.04 LTS へアップグレードするには・アップグレードの注意事項
    Ubuntu 26.04 LTS へアップグレードするには 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Ubuntu 26.04 LTS へアップグレードできます。
  • Ubuntu 26.10 その35 - RISC-V 向け Ubuntu Desktop 登場
    RISC-V 向け Ubuntu Desktop 登場 Ubuntu Desktop 26.10 では、RISC-V 向けデスクトップイメージがリリースされます。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.10 その33 - Ubuntu 26.10 β版がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 β版がリリースされました 2026年10月1日、Ubuntu 26.10 β版 がリリースされました。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その34 - Ubuntu と Rust に対する取り組み(2026年10月)
    Ubuntu と Rust に対する取り組み 2026年10月1日、Ubuntu と Rust に対する取り組みが以下で紹介されました。
  • Ubuntu 24.04 その103 - Ubuntu 26.04 LTS へアップグレード可能に・2年分の変化が一気にやってくる
    Ubuntu 26.04 LTS へアップグレード可能に 2026年9月29日、Ubuntu 24.04 LTS から Ubuntu 26.04 LTS へアップグレード可能になりました。
  • Linux その440 - uutils coreutils 0.11.0 でコマンド実行時のエラーメッセージを大幅に改良
    コマンド実行時のエラーメッセージを大幅に改良 uutils coreutils 0.11.0 で、コマンド実行時のエラーメッセージが大幅に改良されました。
  • Ubuntu 26.10 その32 - Snapdragon X2 に対応した Ubuntu 26.10 実験版登場
    Snapdragon X2 に対応した Ubuntu 26.10 実験版登場 2026年9月29日、Snapdragon X2 に対応した Ubuntu 26.10 実験版が登場しました。
記事のピックアップ
オプション