GitのHEADとは?
HEADは、通常は現在いるbranchを経由して、今チェックアウトしているcommitを指すポインタです。
HEADは、理解しておくと最も役立つGitの参照の1つです。それはあなたがどこにいるかを教えてくれます。作業ディレクトリが反映しているcommitであり、次のcommitが付く場所です。たいていの場合、HEADはbranchを指し、そのbranchがcommitを指します。
HEADが指すもの
通常、HEADはbranch名を指し、そのbranchがcommitを指します。だからHEADは間接的に現在のcommitを識別します。新しいcommitを作ると、branchが前進しHEADがそれに従い、あなたをbranchのtipに保ちます。
HEADの確認
HEADがどこにあるかをGitに尋ね、コマンドの中で名前で参照できます。
Referring to HEAD
git rev-parse HEAD
git log -1 HEAD
git show HEAD~1HEADはどう動くか
branchを切り替えると、HEADは新しいbranchを指すよう動きます。commitするとbranchとHEADが一緒に前進します。HEADを基準にcommitを参照することもできます。たとえば1つ前のcommitはHEAD~1で、これは最近の作業を確認したり取り消したりするのに便利です。
CI/CDにおけるHEAD
CIのrunnerがリポジトリをチェックアウトすると、buildされるcommitにHEADを設定します。多くのpipelineは、どのtestを実行するかを決めるためにHEADやベースrefに対してdiffを計算します。jobの中でHEADが何を指しているかを知ることは、なぜworkflowが特定のcommitをbuildしたのかの説明に役立ちます。
HEADについて覚えておくこと
- HEADは通常branchを指し、それがcommitを指す。
- commitするとbranchとHEADが一緒に動く。
- HEAD~1とHEAD^は、今を基準に以前のcommitを参照する。
- detached HEADはbranchではなく、commitを直接指す。
重要なポイント
- HEADは、通常branchを経由して、現在のcommitを指します。
- commitやbranchの切り替えに応じて動きます。
- CIは、チェックアウトしてbuildするcommitにHEADを設定します。
関連ガイド
What Is a Detached HEAD?What is a detached HEAD in Git? Learn how it happens when you check out a commit directly, why CI often runs…
What Is a Git Branch?What is a Git branch? Learn how branches are lightweight movable pointers, how they enable parallel work, and…
What Is a Git Commit?What is a Git commit? An explainer covering what a commit records, its message and hash, how commits form his…