Help us understand the problem. What is going on with this article?

【やっとわかった!】gitのHEAD^とHEAD~の違い

More than 1 year has passed since last update.

20190502追記

  • わかりにくい表現を修正しました
  • 「おまけ」を追加しました

追記ここまで

そもそもHEADとは

現在チェックアウトしているブランチの先頭を指す。
ブランチの切り替えという動作は、「HEADの移動+ワークスペースのファイルの更新」で成り立っています。
詳しくはこちらを参照ください。→ Git のブランチ機能 - ブランチとは

~ (チルダ)

~世代前のコミットを指定できる。

^ (キャレット)

複数ある親コミットのなかからコミットを指定できる。

絵にしてみる

チルダ

スライド3.JPG
チルダ指定をすることで、コミットをさかのぼって指定ができます。
HEAD~と指定することで、HEADに対して1世代前のコミットを指定でき、HEAD~~と指定することでHEADの2世代前のコミットを指定できます。

キャレット

スライド2.JPG

キャレット指定をすることで、複数親がいる場合に、親コミットを指定できます。
複数親がいる状況は、2つのコミットをマージしたときに起きます。
HEAD^と指定することで一つ目の親を指定でき、HEAD^2と指定することで2つ目の親を指定できます。

HEAD~~とHEAD~2は同じだけど、HEAD^^とHEAD^2は違う

HEAD~~とHEAD~2は同じコミットを指しますが、HEAD^^とHEAD^2はそれぞれ違うコミットを指します。

スライド4.JPG

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~のままです)
  • 見出し中で「~~」を右上付き文字しようとしたらうまくいきませんでした。いったん「~ ~」のように間にスペースを入れた状態で保存して、その後スペースを消したらなぜかうまくいきました
chihiro
jrits
信頼と魅力のある先進のITをもとに、お客様のワークスタイル・イノベーションの実現を目指します。
http://www.jrits.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした