Gitでは、あるリポジトリに他のリポジトリ(=サブモジュール)を追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更することもできる。
今回は、サブモジュールのパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりしてみたので、その手順を共有する。
前提条件
下記記事の内容を実施済であること。
相対パス指定によるサブモジュールの追加
git submodule addコマンドを利用すると、親モジュールにサブモジュールを追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりできる。その手順は、以下の通り。
1) 親モジュールを取得したディレクトリ上で右クリックし、「Git Bash Here」メニューを選択する。
2) 以下のように、Git Bash(gitを操作する際に使うターミナル)が起動することが確認できる。
3) GitHub上で親モジュールを開き、「Code」ボタンを押下すると、親モジュールのURLが確認できる。ここで確認したURLは「https://github.com/purin-it/subModuleMain.git」となる。
4) GitHub上でサブモジュールを開き、「Code」ボタンを押下すると、サブモジュールのURLが確認できる。ここで確認したURLは「https://github.com/purin-it/subModuleSub.git」となる。
5)「git submodule add (サブモジュールへの相対パス)」コマンドで、subModuleSubリポジトリをサブモジュールとして追加する。なお、親モジュールとサブモジュールのURLの関係から、親モジュールからサブモジュールへの相対パスは「../subModuleSub.git」と表現できる。
6) サブモジュールを追加したことで、以下のように、「.gitmodules」ファイルが更新され、ここにサブモジュールへの参照パスが相対パスで記載されていることが確認できる。
7) 「ls -lR」や「cat (参照するファイル名)」を実行すると、絶対パス指定だった場合と同じように、「subModuleSub」ディレクトリ下に、GitHub上にあったサブモジュールのファイル「sub.txt」が取得できたことが確認できる。
なお、上記コマンドについては、以下のサイトの「まだリポジトリに登録していない」という項目を参照のこと。
https://qumeru.com/magazine/522
9) サブモジュールをある特定のディレクトリ下に追加するには、「git submodule add (サブモジュールへのパス) (追加するディレクトリ)」というコマンドを利用する。
10) 「ls -lR」や「cat (参照するファイル名)」を実行すると、以下のように、指定した「sub/dir」ディレクトリ下に、GitHub上にあったサブモジュールのファイル「sub.txt」が取得できたことが確認できる。
11) サブモジュールを追加したことで、以下のように、「.gitmodules」ファイルが更新され、サブモジュールのパスが指定した「sub/dir」に変更されたことが確認できる。
12) サブモジュール追加後のファイルをローカル端末で確認した結果は、以下の通り。
13) git commitコマンドとgit pushコマンドを利用して、追加したサブモジュールの内容を、GitHubに反映する。
14) サブモジュール追加後のGitHubの内容は、以下の通りで、「sub」ディレクトリ下に遷移すると、サブモジュール内のファイルも追加されていることが確認できる。
要点まとめ
- Gitでは、あるリポジトリに他のリポジトリ(=サブモジュール)を追加することができるが、その際のパス指定に相対パスを指定したり、サブモジュールを追加するフォルダを変更したりできる。