最新のコミットオブジェクトを指すポインター
前回紹介したように、「コミットオブジェクト」は「親コミットオブジェクト」への参照を含みます。「親コミットオブジェクト」への参照を含むには、各ブランチの最新の「コミットオブジェクト」がどの「コミットオブジェクト」なのかを管理する必要があります。
さもないと、コミットする時に生成される「コミットオブジェクト」は、「親コミットオブジェクト」への参照を含むことができなくなります。
「親コミットオブジェクト」への参照を含むことができなくなるということは、履歴管理が行えなくなるということです。
最新コミットのコミットオブジェクトを指すポインター
「Git」では、最新の「コミットオブジェクト」を指すポインターを利用して、最新の「コミットオブジェクト」がどの「コミットオブジェクト」なのか、管理を行います。このポインターのことを、「ブランチヘッド(branch head)」 と表現します。
ブランチヘッドは自動的に移動する
ユーザーが「コミット」を行うと「コミットオブジェクト」が生成され、コミット処理が行われます。コミット処理が完了すると、その「コミットオブジェクト」が最新の「コミットオブジェクト」になります。
「ブランチヘッド」は最新の「コミットオブジェクト」を指すポインターなので、その「コミットオブジェクト」を指すようになります。
これは「コミット」を行うたびに自動的に行われます。
これで、どの「コミットオブジェクト」が最新の「コミットオブジェクト」なのかを把握することができます。
ブランチヘッドはブランチごとに存在する
「ブランチヘッド」は「ブランチ」ごとに存在します。「ブランチ」ごとに最新の「コミットオブジェクト」が異なるためです。
例えばリポジトリーに以下の「ブランチ」が存在するとします。
- BranchA
- BranchB
- BranchC
以下のように、それぞれの「ブランチ」で最新の「コミットオブジェクト」指す「ブランチヘッド」が存在します。