【やっとわかった!】gitのHEAD^とHEAD~の違い
20190502追記
- わかりにくい表現を修正しました
- 「おまけ」を追加しました
追記ここまで
そもそもHEADとは
現在チェックアウトしているブランチの先頭を指す。
ブランチの切り替えという動作は、「HEADの移動+ワークスペースのファイルの更新」で成り立っています。
詳しくはこちらを参照ください。→ Git のブランチ機能 - ブランチとは
~ (チルダ)
~世代前のコミットを指定できる。
^ (キャレット)
複数ある親コミットのなかからコミットを指定できる。
絵にしてみる
チルダ
チルダ指定をすることで、コミットをさかのぼって指定ができます。
HEAD~と指定することで、HEADに対して1世代前のコミットを指定でき、HEAD~~と指定することでHEADの2世代前のコミットを指定できます。
キャレット
キャレット指定をすることで、複数親がいる場合に、親コミットを指定できます。
複数親がいる状況は、2つのコミットをマージしたときに起きます。
HEAD^と指定することで一つ目の親を指定でき、HEAD^2と指定することで2つ目の親を指定できます。
HEAD~~とHEAD~2は同じだけど、HEAD^^とHEAD^2は違う
HEAD~~とHEAD~2は同じコミットを指しますが、HEAD^^とHEAD^2はそれぞれ違うコミットを指します。
HEAD^2はHEADの2つ目の親を指しますが、HEAD^^はHEADの一つ目の親の一つ目の親を指します。
一方、HEAD~~とHEAD~2はどちらもHEADの2世代前のコミットを指します。
おまけ
右上付き文字を書けなくて、「HEAD~」と表していたんですが、ちゃんと「HEAD~」と書けるようになりました!
以下のように書くことで、右上付き文字が書けます。
HEAD<sup>~</sup>
参考:http://danpansa.blog.jp/archives/21332987.html
ただし、以下の2点がこの表記だとうまくいきません。
- 記事のタイトル(タイトルはHEAD~のままです)
- 見出し中で「~~」を右上付き文字しようとしたらうまくいきませんでした。いったん「~ ~」のように間にスペースを入れた状態で保存して、その後スペースを消したらなぜかうまくいきました
Author And Source
この問題について(【やっとわかった!】gitのHEAD^とHEAD~の違い), 我々は、より多くの情報をここで見つけました https://qiita.com/chihiro/items/d551c14cb9764454e0b9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .