🐈‍⬛

【Git】submodule を親リポジトリに追加する

2024/01/03に公開

■ 想定している構成

シンプルに。
プロジェクト始動時で作成する手順を想定。

parent (メインリポジトリ)
   - test.md (メインリポジトリ直下のファイル)
   - child-1 (サブモジュール)
      - test.md
   - child-2 (サブモジュール)
      - test.md

■ 手順

1. ディレクトリ作成

parent、child-1、child-2のディレクトリを作成する。

(例)
parent (メインリポジトリ)
  - test.md
child-1 (サブモジュール)
  - test.md
child-2 (サブモジュール)
   - test.md

2. ローカルリポジトリ作成

parent, child-1, child-2 全て同じ手順

// 該当ディレクトリに移動
cd {該当ディレクトリ}

// ローカルリポジトリ作成
git init

3. リモートリポジトリ作成

コマンド or GitHubなどのプラットフォームを用いてリモートリポジトリを作成

リポジトリURL例)
https://github.com/{ユーザーID}/parent.git
https://github.com/{ユーザーID}/child-1.git
https://github.com/{ユーザーID}/child-2.git

4. ローカルリポジトリにリモートリポジトリを追加 & push

parent, child-1, child-2 全て同じ手順

// 該当ディレクトリに移動
cd {該当ディレクトリ}

// リモートリポジトリをローカルリポジトリに追加
git remote add origin https://github.com/{ユーザーID}/{リポジトリ名}.git

// ステージング コミット プッシュ
git add .
git commit -m 'first commit'
git push -u origin main

5. parent直下にサブモジュールを追加

// 該当ディレクトリに移動
cd {parentディレクトリ}

// サブモジュールを追加
git submodule add {対象のリポジトリURL} {ディレクトリ名}

// 例)
git submodule add https://github.com/{ユーザーID}/child-1.git child-1
git submodule add https://github.com/{ユーザーID}/child-2.git child-2

6. サブモジュールが追加された状態で親をリモートに反映

// 該当ディレクトリに移動
cd {parentディレクトリ}

// ステージング コミット プッシュ
git add .
git commit -m 'first commit'
git push -u origin main

■ GitHubの表示

親リポジトリにサブモジュールの追加が完了した場合の表示
フォルダアイコンに「→」が表示される(コミットが紐づいている)

■ vsCodeの表示

親リポジトリにサブモジュールの追加が完了した場合の表示
色が青色になるみたい

■ 参考サイト

【Git】既存の子ディレクトリをサブモジュール管理に変更する手順

Discussion