GitのHEADとは?origin/HEADとの違いは?初心者向けに画像でやさしく解説!

更新日:

GITのHEADとは何か?初心者でも分かるように画像で解説

GITを使い始めたんだけど、HEADってなんなの?なんの意味があるの?

 

というわけで、GitのHEADについてorigin/HEADとの違いも交えて、
やさしく画像入りで解説します。

 

GitのHEADとは?

HEADは今いるブランチの最新の変更点にくっついてるモノです。
また今HEADがあるブランチのみ、新たな変更保存(Commit)をする事ができます。

 

分かりやすく画像で解説します。

上の画像はGITを見える化するツールSourceTreeの画面です。

左側の「BRANCHES」のところを見ると「ask」「furigana」「master」 という3つのブランチが作ってあります。

そして、現在いるブランチ(Checkoutしてるブランチ)がaskになってます。なので、○ askとなってます。そして、画面右側の一番上にも、○があって、[ask] [origin/ask]がありますよね。

つまり、この○がHEADなんです。

例えば、今度は、左側のBRANCHESをmasterに代えてみます。

すると、[master]や[origin/master]があるところに今度は○が移動しました。
HEADがaskブランチからmasterブランチの最新の変更点のところに移動したという事になります。

このように、HEADは今いるブランチの最新の変更点を指すものだと思ってください。

 

そもそも master や origin/master って何?ブランチって何?って場合は、

Gitのorigin masterとmasterの違い、意味を初心者向けに図解でやさしく解説!

GITのブランチとは?初心者向けに図解でやさしく解説

これらを読むとスッキリ分かりますよ!

Neby

SourceTreeのインストール方法2020最新版。GITHUBとつなぐとこまで詳細解説。

 

HEADはファイルを書き換える位置を示している

HEADは基本的に最新の変更点(コミット)にいます。

下の画像では、HEADは前回の保存(コミット)である「Paypal自動返信メールのテスト」という部分に停まってます。これが現状askブランチでは最新のコミットです。

 

 

例えば、askブランチに新たに変更を加えたコードを保存(コミット)するとします。

「説明文の付け足し」という新コミットが完了すると、新しいコミットにaskと○(HEAD)が移動してるのが分かります。

このように、HEADは今いるブランチの最新変更点(最新のコミット)を指すものだと考えてください。

 

HeadとCheckoutの関係

GitはHEADがあるブランチにのみ新しいコミット(保存)が可能なんだ。
Neby
じゃあ、今askブランチにHEADがあったけど、masterブランチに保存したい時はできないって事?
その時はcheckoutというコマンドを使って、HEADを別のブランチに移動する必要があるんだ。
Neby

 

今いるブランチとは別のブランチにコミットする場合は、git checkout 移動先のブランチ名 というコマンドを打つ事で、HEADを移動させる事ができます。

例えば、ask→masterブランチとHEADを移動したいなら、git checkout master というコマンドを使う事で、masterにHEADが移動します。

 

askに戻したかったら、git checkout ask って事?
そういう事!バッチリだね。
Neby
これさ、HEADが最新ではない変更点に移動する事ってないの?
まれに何かの操作の影響を受けて移動してしまう事はあるよ。その状態をdetached headって言うんだけど、これになったら、全く同じく git checkout 移動先ブランチ名 のコマンドを打てば直るから大丈夫。
Neby
コミットっていうのは、変更点って事でOK?
そう、コミットっていうのは、最新の変更に「どこどこを変更した」っていうメモをくっつけて保存する事。commit と add(stage)については、こっちの記事で詳しく解説してるよ!

GitのCommitとは?AddやPushとの違いは?初心者向けに図解でやさしく解説!

Neby

 

ちなみに、SourceTree上では、BRANCHES欄のブランチ名をダブルクリックするだけで、HEADを移動できます。

GITをターミナル(コマンドプロンプトなど)を介して使う場合は、今話したcheckoutコマンドを使って移動する必要があります。

 

origin/HEADって何?HEADとは違うの?

ねぇ、↑このorigin/HEADって何?
origin HEADはGITHUB側にあるHEADの事。ただ、本来はGITHUB側にHEADは無いんだ。クローンを使ったりすると突然出来たりするんだ。
Neby

origin/HEADはGITHUBのデフォルトのブランチの最新位置に基本的に出現します。通常はmasterがデフォルトとして最初から作られてますから、origin/masterの最新変更点の位置に出現します。

また、origin/HEADはどの位置にあっても問題ありません。基本的に使う事はないので。

 

写真で血圧記録

  • この記事を書いた人

Neby

本を毎日多読しつつ、資産運用、プログラミング、心理学、ネットビジネススキルを猛向上中。貧富の差が広がる5年後、10年後に安心生活を送るためのお金のリテラシー、スキル、資産を一緒に作っていきましょう。

-Git入門初心者向け