Windows シェル拡張(エクスプローラに機能を追加)で Git を操作できる無料の Git クライアントソフトウェア TortoiseGit で、Git の状態を表す 3 つのツリー、 HEAD ファイル, index ファイル、作業ディレクトリについて、公式のガイドをもとに作成したリポジトリフォルダを例にして紹介します。

※ TortoiseGit-2.17.0.2-64bit を使用します。
前回の記事
前回は、TortoiseGit を用いて、 Git の公式サイトの reset コマンドの説明のページ「Git – リセットコマンド詳説」でリセットの解説に用いてるリポジトリ例を実際に作成する手順を紹介しました。
3つのツリーとは
Git の状態を表す3つのツリーには、
- HEAD
- インデックス
- 作業ディレクトリ(ワーキングツリー)
があります。
Git – リセットコマンド詳説
ツリー 役割 HEAD 最新コミットのスナップショットで、次は親になる インデックス 次のコミット候補のスナップショット 作業ディレクトリ サンドボックス
HEAD
HEAD は、作業に用いているワーキングツリーが参照しているコミット位置を指し示すポインタです。
このポインタは、コミットごとに一意のコミットハッシュの値を指します。

HEAD のコミット位置は、通常、ブランチの tip (ブランチの最新のコミット)を指しますが、分離されたコミットのコミット位置を指す場合もあります。
※分離されたコミットは、 reset コマンドで取り消されたコミットのことを指します。
現在のブランチを指し示すポインタは HEAD と呼ばれています。HEAD は、そのブランチの最新コミットを指し示すポインタでもあります。 ということは、HEAD が指し示すコミットは新たに追加されていくコミットの親になる、ということです。
Git – リセットコマンド詳説
インデックス
インデックスは、 add コマンドでステージングエリアに追加されているファイルの情報です。
※ステージングエリアは、次回のコミットで Git 管理に記録するファイル群を配置しておくエリアです。

インデックスとは、次のコミット候補 のことを指します。Git の「ステージングエリア」と呼ばれることもあります。
Git – リセットコマンド詳説git commit
を実行すると確認される内容だからです。
この index ファイルが作成されるタイミングについては、以下の記事を参照してください。
作業ディレクトリ
作業ディレクトリは、実際にユーザが閲覧・編集するファイル群を置いているフォルダです。
このファイル群には、 Git 管理外のファイルも、前述の checkout コマンドで指定したコミット位置から取得したGit でバージョン管理されているファイルも含まれます。
Git の視点では、この作業ディレクトリをワーキングツリーとも呼びます。
3つのツリーの最後は作業ディレクトリです。 他のツリーは、データを
Git – リセットコマンド詳説.git
ディレクトリ内に処理しやすい形で格納してしまうため、人間が取り扱うには不便でした。 一方、作業ディレクトリにはデータが実際のファイルとして展開されます

※ TortoiseGit によって、Git でバージョン管理されているファイルのアイコンには緑色の ✔ マークなどが追加表示されます。
まとめ
今回は、Windows シェル拡張(エクスプローラに機能を追加)で Git を操作できる無料の Git クライアントソフトウェア TortoiseGit で、Git の状態を表す3つのツリー、 HEAD ファイル, index ファイル、作業ディレクトリについて、公式のガイドをもとに作成したリポジトリフォルダを例にして紹介しました。
参照サイト Thank You!
- Git
- TortoiseGit – Windows Shell Interface to Git
- Git – リセットコマンド詳説
- Git – git-checkout Documentation
- Git – git-add Documentation
記事一覧 → Compota-Soft-Press
コメント