2013年7月19日金曜日

git HEADとかHEAD^とかHEAD^^とかHEAD^2とかHEAD~とかHEAD~2とか (沢山書いとく)

ふらふら話題が変わって今度はgitかよ!

という感じかもしれませんが。

なんか自分の中で曖昧だったのと、さくっと検索した感じこのポイントで解説されている所が無かったのでまとめておきます。




って感じの時、HEAD^とか^^とか^2とか~とか~~とか~2とかってどれになるのでしょう?

教科書だとこんな感じです


表記意味
^1番目の親
^nn番目の親
~1世代上の親
~nn世代上の親の親

ごめんよく分からなかった。

いや、理解した今はごくまっとうな説明って分かるけど、最初意味分からんかった。

というわけで分かりやすい~の方から解説

HEAD~

「1世代上」なので、上記だとCommit2 or Commit3。
どっち?という話はあるがまあ問題無し

HEAD~2

「2世代上」なので、つまり祖父。上記だとCommit1
特に問題無し

HEAD~~

これは、(HEAD~)~という解釈になる。つまり『「1世代上」の1世代上』なのでこちらもやはり祖父。
上記だとCommit1。
これも特に問題無し。

HEAD^

「1番目の親」。何番目だろうが親なので祖父より上は考えないのが正解。
上記だと例えばCommit2。
まあこれもよくある例。

HEAD^2

「2番目の親」。何番目だろうが祖父より上は考えないので、上記でHEAD^がCommit2ならばHEAD^2がCommit3。
~2と^2は全然意味が違う。

HEAD^^

この表記も良く見る。一見^2と同じかと思うが、これもHEAD~~同様(HEAD^)^という解釈になる。
つまり、『「1番目の親」の1番目の親』。つまり祖父
^^と^2は全然意味が違う。

まとめるとこんな感じ

「~系」






「^系」



まあ、ちゃんと理解してる人には当たり前過ぎる話題かと思いますが、自分みたいな初心者には落とし穴かもしれないのでまとめときました。

今回はオチ無し。