Git

Gitコマンドでサブモジュールを相対パス指定で追加してみた

Gitでは、あるリポジトリに他のリポジトリ(=サブモジュール)を追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更することもできる。

今回は、サブモジュールのパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりしてみたので、その手順を共有する。

前提条件

下記記事の内容を実施済であること。

Gitコマンドでサブモジュールを追加してみたGitコマンドでは、あるリポジトリに他のリポジトリ(=サブモジュール)を追加することができる。今回は、Gitコマンドでサブモジュールを追...

相対パス指定によるサブモジュールの追加

git submodule addコマンドを利用すると、親モジュールにサブモジュールを追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりできる。その手順は、以下の通り。

1) 親モジュールを取得したディレクトリ上で右クリックし、「Git Bash Here」メニューを選択する。
サブモジュールの追加(相対パス)_1

2) 以下のように、Git Bash(gitを操作する際に使うターミナル)が起動することが確認できる。
サブモジュールの追加(相対パス)_2

3) GitHub上で親モジュールを開き、「Code」ボタンを押下すると、親モジュールのURLが確認できる。ここで確認したURLは「https://github.com/purin-it/subModuleMain.git」となる。
サブモジュールの追加(相対パス)_3

4) GitHub上でサブモジュールを開き、「Code」ボタンを押下すると、サブモジュールのURLが確認できる。ここで確認したURLは「https://github.com/purin-it/subModuleSub.git」となる。
サブモジュールの追加(相対パス)_4

5)「git submodule add (サブモジュールへの相対パス)」コマンドで、subModuleSubリポジトリをサブモジュールとして追加する。なお、親モジュールとサブモジュールのURLの関係から、親モジュールからサブモジュールへの相対パスは「../subModuleSub.git」と表現できる。
サブモジュールの追加(相対パス)_5

6) サブモジュールを追加したことで、以下のように、「.gitmodules」ファイルが更新され、ここにサブモジュールへの参照パスが相対パスで記載されていることが確認できる。
サブモジュールの追加(相対パス)_6

7) 「ls -lR」や「cat (参照するファイル名)」を実行すると、絶対パス指定だった場合と同じように、「subModuleSub」ディレクトリ下に、GitHub上にあったサブモジュールのファイル「sub.txt」が取得できたことが確認できる。
サブモジュールの追加(相対パス)_7

8) 追加したサブモジュールを削除する。
サブモジュールの追加(相対パス)_8

なお、上記コマンドについては、以下のサイトの「まだリポジトリに登録していない」という項目を参照のこと。
https://qumeru.com/magazine/522



9) サブモジュールをある特定のディレクトリ下に追加するには、「git submodule add (サブモジュールへのパス) (追加するディレクトリ)」というコマンドを利用する。
サブモジュールの追加(相対パス)_9

10) 「ls -lR」や「cat (参照するファイル名)」を実行すると、以下のように、指定した「sub/dir」ディレクトリ下に、GitHub上にあったサブモジュールのファイル「sub.txt」が取得できたことが確認できる。
サブモジュールの追加(相対パス)_10

11) サブモジュールを追加したことで、以下のように、「.gitmodules」ファイルが更新され、サブモジュールのパスが指定した「sub/dir」に変更されたことが確認できる。
サブモジュールの追加(相対パス)_11

12) サブモジュール追加後のファイルをローカル端末で確認した結果は、以下の通り。
サブモジュールの追加(相対パス)_12_1

サブモジュールの追加(相対パス)_12_2 サブモジュールの追加(相対パス)_12_3

13) git commitコマンドとgit pushコマンドを利用して、追加したサブモジュールの内容を、GitHubに反映する。
サブモジュールの追加(相対パス)_13

14) サブモジュール追加後のGitHubの内容は、以下の通りで、「sub」ディレクトリ下に遷移すると、サブモジュール内のファイルも追加されていることが確認できる。
サブモジュールの追加(相対パス)_14_1

サブモジュールの追加(相対パス)_14_2 サブモジュールの追加(相対パス)_14_3

要点まとめ

  • Gitでは、あるリポジトリに他のリポジトリ(=サブモジュール)を追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりできる。