というわけで、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は今いるブランチの最新の変更点を指すものだと思ってください。
Gitのorigin masterとmasterの違い、意味を初心者向けに図解でやさしく解説!
これらを読むとスッキリ分かりますよ!
→SourceTreeのインストール方法2020最新版。GITHUBとつなぐとこまで詳細解説。
HEADはファイルを書き換える位置を示している
HEADは基本的に最新の変更点(コミット)にいます。
下の画像では、HEADは前回の保存(コミット)である「Paypal自動返信メールのテスト」という部分に停まってます。これが現状askブランチでは最新のコミットです。
例えば、askブランチに新たに変更を加えたコードを保存(コミット)するとします。
「説明文の付け足し」という新コミットが完了すると、新しいコミットにaskと○(HEAD)が移動してるのが分かります。
このように、HEADは今いるブランチの最新変更点(最新のコミット)を指すものだと考えてください。
HeadとCheckoutの関係
今いるブランチとは別のブランチにコミットする場合は、git checkout 移動先のブランチ名 というコマンドを打つ事で、HEADを移動させる事ができます。
例えば、ask→masterブランチとHEADを移動したいなら、git checkout master というコマンドを使う事で、masterにHEADが移動します。
ちなみに、SourceTree上では、BRANCHES欄のブランチ名をダブルクリックするだけで、HEADを移動できます。
GITをターミナル(コマンドプロンプトなど)を介して使う場合は、今話したcheckoutコマンドを使って移動する必要があります。
origin/HEADって何?HEADとは違うの?
origin/HEADはGITHUBのデフォルトのブランチの最新位置に基本的に出現します。通常はmasterがデフォルトとして最初から作られてますから、origin/masterの最新変更点の位置に出現します。
また、origin/HEADはどの位置にあっても問題ありません。基本的に使う事はないので。