Gitコマンドを利用すると、サブモジュールの内容をローカル端末で更新することもできるが、サブモジュールの更新後にGitHubにその内容を反映するには、サブモジュールの内容をGitHubに反映した後で、親モジュールの内容をGitHubに反映する必要がある。
今回は、サブモジュールの内容をローカル端末で更新しGitHubに更新してみたので、その手順を共有する。
前提条件
下記記事の内容を実施済であること。
Gitコマンドによるサブモジュールの更新
Gitコマンドでサブモジュールの内容をローカル端末で更新し、GitHubにその内容を反映する手順は、以下の通り。
1) 親モジュールを取得する予定のディレクトリ上で右クリックし、「Git Bash Here」メニューを選択する。
2) 以下のように、Git Bash(gitを操作する際に使うターミナル)が起動することが確認できる。
3) GitHub上で親モジュールを開き、「Code」ボタンを押下すると、親モジュールのURLが確認できる。ここで確認したURLは「https://github.com/purin-it/subModuleMain.git」となる。
4) 「git clone –recursive (親モジュールのURL)」 を実行し、GitHubからリポジトリ「subModuleMain」の内容をローカルに取得する。前提条件の記事では、取得した後で「git submodule update –init」コマンドを実行していたが、「–recursive」オプションを利用するとサブモジュールの内容も含め取得することができるため、「git submodule update –init」コマンドの実行は不要になる。
5) 「subModuleMain」ディレクトリ移動後に「ls -lR」や「cat (参照するファイル名)」を実行すると、以下のように、「subModuleMain」ディレクトリ下にGitHub上にあった「main.txt」が取得でき、サブモジュール下の「sub/dir/sub.txt」「sub/dir/sub2.txt」も取得できることが確認できる。
6) 「sub/dir」ディレクトリ移動後にsub3.txtを追加し、追加されたことを確認する。
7) git addコマンド、git commitコマンド、git pushコマンドを利用して、サブモジュールの更新内容をGitHubに反映する。なお、git pushコマンドは「git push origin main」ではうまくいかず、「git push origin HEAD:refs/heads/main」でうまくいった。
8) サブモジュールの内容をGitHub上で確認した結果は以下の通りで、sub3.txtが追加されていることが確認できる。
9) git addコマンド、git commitコマンド、git pushコマンドを利用して、サブモジュールの更新内容を親モジュールで反映し、GitHubに反映する。
10) 親モジュールの内容をGitHub上で確認した結果は以下の通りで、「sub」ディレクトリ下に遷移すると、サブモジュール内に追加したファイルも表示されていることが確認できる。
要点まとめ
- サブモジュールの内容をローカル端末で更新した場合は、サブモジュールの内容をGitHubに反映した後で、親モジュールの内容をGitHubに反映する必要がある。