TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新

エクスプローラで Git 操作ができるクライアントソフト TortoiseGit を用いて、追加したサブモジュールを対応するリモートリポジトリの最新の状態に更新する手順を紹介します。
その後、サブモジュールが指すリビジョンの変更を、スーパープロジェクトにコミットし、スーパープロジェクトのリモートリポジトリにプッシュし、結果をハッシュ値(SHA-1)で確認します。

TortoiseGit ダウンロードとインストール1

TortoiseGit-2.17.0.2-64bit を使用します。

サブモジュールの既定の更新ではリモートは反映されません

サブモジュールの更新(git submodule update コマンド)は、 –remote オプションを使用しない場合ローカルのスーパープロジェクト(サブモジュールを持つ上位のリポジトリの作業ディレクトリ)のサブモジュール用のリポジトリ用いて更新します。

既定では、サブモジュール用のリポジトリの HEAD は、サブモジュール追加時のリビジョンを指しているので、サブモジュールの更新をしてもサブモジュールの追加時の状態になります。

–remote

This option is only valid for the update command. Instead of using the superproject’s recorded SHA-1 to update the submodule, use the status of the submodule’s remote-tracking branch. The remote used is branch’s remote (branch.<name>.remote), defaulting to origin. The remote branch used defaults to the remote HEAD, but the branch name may be overridden by setting the submodule.<name>.branch option in either .gitmodules or .git/config (with .git/config taking precedence).

このオプションは更新コマンドに対してのみ有効です。スーパープロジェクトの記録された SHA-1 を使用してサブモジュールを更新する代わりに、サブモジュールのリモート追跡ブランチのステータスを使用します。使用されるリモートはブランチのリモート(branch..remote)で、デフォルトはoriginです。使用されるリモート ブランチはデフォルトでリモート HEAD になりますが、.gitmodules または .git/config のいずれかで submodule..branch オプションを設定することでブランチ名をオーバーライドできます(.git/config が優先されます)。

Git – git-submodule Documentation と Google 翻訳

詳しくは、次回の記事を参照してください。

TODO: 次回の記事

リモートリポジトリによるサブモジュールの更新

サブモジュールを更新するために、スーパープロジェクト(サブモジュールを持つ上位のリポジトリの作業ディレクトリ)をエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「サブモジュールのアップデート」を選択してダイアログを表示します。
スーパープロジェクトフォルダで「サブモジュールを更新」を行ってください。サブモジュールのフォルダで行うと、そのサブモジュール自身の更新が行われません。

–remote オプションを TortoiseGit の「サブモジュールを更新」ダイアログで指示するには「リモート追跡ブランチ」をチェックします。
他にも、サブモジュールがさらにサブモジュールを持つ場合は、「再帰的」にチェックをいれることで、下位のサブモジュールも更新されます。
「サブモジュールを初期化する」をチェックすると、サブモジュールが初期化されていない場合に初期化が行われます。

更新するサブモジュールを「パス」のリストから選び、設定が済んだら OK ボタンを押します。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新1

サブモジュール更新が成功しました。
※リモートリポジトリの最新のコミットにしか含まれない sc-util-editor サブモジュールも取得できました。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新2
git.exe submodule update --progress --init --recursive --remote -- "addons/sc-fit-font-size"
Submodule path 'addons/sc-fit-font-size': checked out '1be13c2dce8a0d41cbb4f22a955c2dd68b9afe5b'
Submodule path 'addons/sc-fit-font-size/sc-util-editor': checked out '8a0011291de37ff26987f0b96906cfe882c0101f'

成功 (1750 ms @ 2025/09/13 18:11:13)

サブモジュールの更新をコミット

リモートリポジトリの HEAD が指す状態に更新したサブモジュール(例:sc-fit-font-size)は、スーパープロジェクトから見るとサブモジュール参照するコミット位置(リビジョン)が変更されています。

このサブモジュールの参照するコミット位置(リビジョン)の変更を、スーパープロジェクトのローカルリポジトリにコミットします。

スーパープロジェクトのフォルダをエクスプローラで開いて、右クリックで表示されるメニュー「Git コミット -> “ブランチ名”」を選択して、コミットダイアログを開きます。

コミット先と Change made リストの変更内容がサブモジュールのフォルダパスであることを確認して、メッセージを入力してから、 OK ボタンを押してコミットします。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新3

コミットダイアログの右下の「パッチを表示」リンクをクリックすると、サブモジュールの更新による変更部分を差分として確認できます。

差分は、更新したサブモジュールの指しているコミット位置(リビジョン)を表すハッシュ値(SHA-1)でした。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新4
diff --git a/addons/sc-fit-font-size b/addons/sc-fit-font-size
index 17f5df9..1be13c2 160000
--- a/addons/sc-fit-font-size
+++ b/addons/sc-fit-font-size
@@ -1 +1 @@
-Subproject commit 17f5df952dacaf323b330bc77eff73d485c0cd0a
+Subproject commit 1be13c2dce8a0d41cbb4f22a955c2dd68b9afe5b

コミットが完了しました。
続けて、スーパープロジェクトのリモートリポジトリにプッシュしたい場合は「プッシュ」ボタンを押します。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新5
[develop 712fb1d] sc-fit-font-size サブモジュールをリモートリポジトリの最新の状態に更新してコミット位置が変わったことをスーパープロジェクトにコミットします。
 1 file changed, 1 insertion(+), 1 deletion(-)

成功 (344 ms @ 2025/09/13 18:15:01)

スーパープロジェクトのコミットをリモートリポジトリへプッシュ

引き続き、スーパープロジェクトのリモートリポジトリにプッシュします。
一度閉じた場合は、スーパープロジェクトのフォルダをエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「プッシュ」を選択します。

「プッシュ」ダイアログの

  • 「 Ref 」枠で、プッシュ元の「ローカル」とプッシュ先の「リモート」の項目に、それぞれのブランチ名を入力します。
  • 「宛先」枠で、「リモート」ラジオボタンを選択して、リストからプッシュ先のリモート名を選択します。
    ※リモートの選択肢は、右側の「管理」ボタンで開く「設定」ダイアログの「Git」→「リモート」のページで、リモート(名前)と URL を指定して作成できます。
  • 「オプション」枠は、今回は使用しないので全てオフにしました。

設定が済んだら OK ボタンでプッシュします。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新6

スーパープロジェクトリモートリポジトリに、サブモジュールの更新によるコミット位置の変更のコミットをプッシュしました。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新7
git.exe push --progress  -- "origin" develop:develop
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 528 bytes | 528.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
To G:/Dev/Godot4GD/SakuraCrowd/ScLibProject/remote/sc-fit-font-size-dev.git
bb5e552..712fb1d  develop -> develop

成功 (578 ms @ 2025/09/13 18:15:46)

プッシュしたサブモジュールの変更内容を確認

プッシュの結果を確認します。

PC 内にあるリモートリポジトリエクスプローラで開いて、右クリックで表示されるメニュー「TortoiseGit」→「リポジトリブラウザー」を選択してダイアログを表示します。

「リポジトリブラウザー」ダイアログで、サブモジュールのあるフォルダを選択してウィンドウの右側に表示します。
表示されたサブモジュール(例:sc-fit-font-size)を選択すると下側に、サブモジュールが参照するリビジョン(コミット位置)を表す 1be13c から始まるハッシュ値(SHA-1)が表示されています。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新8

次に、同じリモートリポジトリのフォルダのエクスプローラで、右クリックして表示されるメニュー「TortosieGit」→「ログを表示」を選択します。

「ログメッセージ」ダイアログの上部のリストで最新のコミットのメッセージ選択すると、中央のテキストエリアに SHA-1: から始まるコミットを表す 1be13c から始まるハッシュ値が表示されました。

サブモジュールの参照が指すハッシュ値と、リモートリポジトリの HEAD が指すハッシュ値一致していることから、サブモジュールがリモートリポジトリの最新の状態に更新されたことが確認できました。

TortoiseGit サブモジュールをリモートリポジトリの最新の状態に更新9

まとめ

  • TortoiseGit「サブモジュールを更新」ダイアログを用いて、サブモジュールを対応するリモートリポジトリの HEAD が指す最新の状態に更新しました。
  • サブモジュールの更新で、リモートリポジトリの状態にするには「リモート追跡ブランチ」(–remote オプション)をチェックする必要があります。
  • –remote オプションでサブモジュールを更新後、サブモジュールの指すリビジョンの変更をスーパープロジェクトにコミットし、スーパープロジェクトのリモートリポジトリへプッシュしました。
  • プッシュしたリモートリポジトリで、更新したサブモジュールのリビジョンのハッシュ値と、リモートリポジトリの最新のコミットハッシュ値一致していることを確認しました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました