エクスプローラで操作できる Git クライアントソフト TortoiseGit のコミットのダイアログの「ステージングを使用(試験的)」チェックボックスをチェックした際のコミット対象のリストの状態の変化を確認します。
その結果や、機能を有効にする際に表示されるダイアログの文言から機能の内容を推測します。
その例として、Git で差分は検知されているけどステージングされないサブモジュールのフォルダを用います。

※ TortoiseGit-2.17.0.2-64bit を使用します。
試験的ステージングの変化を確認する差分の例
Git でバージョン管理するリポジトリ内に、外部のリポジトリを配置するサブモジュールは、そのサブモジュール内に変更があっても、ステージングされない差分 (Changes not staged for commit) として扱われます。
しかし、TortoiseGit のコミットのダイアログでは、 Git ではステージングされない差分として扱われているサブモジュールの変更も、「コミット対象のリスト」のそのパスのチェックボックスに自動的にチェックしてしまいます。
そのサブモジュールの例として GodotEngine4 のユニットテストのアセット Gut をサブモジュールとして配置したリポジトリを使用します。
Gut サブモジュール内は、一部のファイルが変更されています。

差分のあるサブモジュールがステージングされていないことの確認
差分のあるサブモジュールがコミット対象としてステージングされていないことを Git コマンドで確認します。
git status
上記コマンドを、このリポジトリのフォルダを作業ディレクトリにしたコマンドディレクトリで実行しました。
その結果、ステージングされない変更点 (Changes not staged for commit) として、一部のファイルが変更されているサブモジュールのフォルダが表示されました。

G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: third_party/Gut (modified content)
Untracked files:
(use "git add <file>..." to include in what will be committed)
addons/godot-git-plugin/
addons/my/
export_presets.cfg
icon.svg
icon.svg.import
project.godot
resource/
scene/
third_party/.gdignore
no changes added to commit (use "git add" and/or "git commit -a")
G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>git diff --cached third_party/Gut
G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib>
Displays paths that have differences between the index file and the current HEAD commit, paths that have differences between the working tree and the index file, and paths in the working tree that are not tracked by Git (and are not ignored by gitignore[5]). The first are what you would commit by running git commit; the second and third are what you could commit by running git add before running git commit.
インデックス ファイルと現在の HEAD コミットの間に差異があるパス、作業ツリーとインデックス ファイルの間に差異があるパス、Git によって追跡されない (そして gitignore[5] によって無視されない) 作業ツリー内のパスを表示します。 1 つ目は、git commit を実行してコミットするものです。 2 番目と 3 番目は、git commit を実行する前に git add を実行することでコミットできるものです。
Git – git-status Documentation と Google 翻訳
TortoiseGit の「ステージングを使用(実験的)」の確認
サブモジュール内に差分がある(ステージングはされていない)状態で、リポジトリのある作業ディレクトリをエクスプローラで開き、右クリックで表示されるメニュー「Git Commit -> “ブランチ名”」を選択して、TortoiseGit のコミットのダイアログを開きます。
git-status コマンドでは、ステージングされない差分として表示されていたサブモジュールのフォルダパスが、TortoiseGit のコミットのダイアログでは、コミット対象を意味するチェックがついた状態で Changes made リストに表示されています。
#サブモジュールの変更は、サブモジュールのリポジトリで管理したいので、自動的にチェックされているのは、あまり便利には思えませんでした。

「ステージングを使用(実験的)」チェックボックスをチェックして、今回試す機能を有効にします。
確認のダイアログが表示されるので OK ボタンを押します。

[Window Title]
TortoiseGit[Content]
このモードを使用している間、各ファイルのチェックボックスは以下の状態を表します:
- ファイル内の変更全てがステージされている場合はチェック
- ファイル内の変更が何もステージされていない場合は未チェック
- ファイル内の変更の一部がステージされている場合は半チェック
チェックボックスをクリックすると、ファイル全体がステージまたはステージ取り消しされます。
「部分的ステージング」または「部分的ステージング取り消し」をクリックすると、現在選択されているファイルのハンク及び変更行が表示され、ステージしたりステージ取り消ししたりすることができます。
パフォーマンス上の問題により、ファイルのグループ(変更されたファイル、バージョン管理外等)と状態(追加、変更、管理外)はチェックボックスをクリックしても更新されません。グループと状態を更新したい場合は F5 キーを押して全体を更新してください。
[ ] このメッセージを再び表示しない(D) [OK]
「ステージングを使用(実験的)」チェックボックスをチェックした後、ダイアログで OK を押すと、
先ほどはコミット対象としてチェックされていた、差分のあるサブモジュールのフォルダのチェックボックスからチェックが解除されました。
「ステージングを使用(実験的)」を有効にすることで、さきほど git status で確認した Git によるステージングの状態を、TortoiseGit のコミットのダイアログの「コミット対象のリストのチェックの有無」に厳格に反映する効果があると考えられます。

「ステージングを使用(実験的)」によるコミットのパッチ情報の変化
TortoiseGit のコミットのダイアログの「ステージングを使用(実験的)」を有効にすることで、差分があっても Git のステージングエリアにないフォルダ・ファイルはチェックが外されて、デフォルトでのコミット対象から除外されました。
これによりコミットのダイアログで確認できるパッチ(差分)も変化します。
コミットのダイアログの右下の「部分的ステージング」リンクをクリックすると、「パッチの表示」ウィンドウが表示されて、このコミットによる差分のテキストを表示します。
※クリック後は「ステージングを隠す」に変わりました。
「ステージングを使用(実験的)」によって、TortoiseGit が独自にチェックしていた、変更のあったサブモジュールのフォルダは、チェックが外されたため、パッチ内容は空になりました。

「部分的ステージング取り消し」リンクをクリックしても同様です。
※クリック後は「ステージング取り消しを隠」に変わりました。

「ステージングを使用(実験的)」のチェックを外して、TortoiseGit の判断により、コミット対象のリストの Git でステージングされていないパス(変更のあったサブモジュールのフォルダ)がチェックされると、「パッチを表示」ウィンドウに、そのサブモジュールのフォルダに関する差分のテキストが表示されました。

diff --git a/third_party/Gut b/third_party/Gut
--- a/third_party/Gut
+++ b/third_party/Gut
@@ -1 +1 @@
-Subproject commit 7929230ab145ff400e44380454646cbc04bf1ac0
+Subproject commit 7929230ab145ff400e44380454646cbc04bf1ac0-dirty
コミットのダイアログの「パッチを表示」ウィンドウによって、「ステージングを使用(実験的)」のチェックなどによりコミットから除外された差分の変更を確認できました。
「ステージングを使用(実験的)」に関する公式情報と推測
「ステージングを使用(試験的)」の説明は、公式のコミットダイアログについてのドキュメントでは見つけられませんでした。試験的なもののため、まだ文書化されていないのかもしれません。
実際に試してみて思った「ステージングを使用(試験的)」を有効にするメリットは、差分のあるサブモジュールといった git-status コマンドではステージングされていない変更点としてあげられている項目を、 TortoiseGit のステージングのリストで勝手に有効にしない点があります。
※ 2025 年 07 月 30 日現在の情報です。
まとめ
今回は、エクスプローラで操作できる Git クライアントソフト TortoiseGit のコミットのダイアログの「ステージングを使用(試験的)」チェックボックスをチェックした際のコミット対象のリストの状態の変化を確認しました。
その結果や、機能を有効にする際に表示されるダイアログの文言から機能の内容を推測しました。
その例として、Git で差分は検知されているけどステージングされないサブモジュールのフォルダを用いました。
参照サイト Thank You!
- Git
- Git – git-status Documentation
- TortoiseGit – Windows Shell Interface to Git
- TortoiseGit – TortoiseGit – Documentation – TortoiseGit – Windows Shell Interface to Git
- Committing Your Changes To The Repository – TortoiseGit – Documentation – TortoiseGit – Windows Shell Interface to Git
記事一覧 → Compota-Soft-Press
コメント