Skip to content
Latchkey

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~1

HEADはどう動くか

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を設定します。

関連ガイド