HEAD の省略形 @
git reset HEAD^ は git reset @^ と書ける (git 1.8.5 より)
HEAD^ や HEAD~ を使いこなす
HEAD から ~, ^ のみでこのツリー上の任意の commit を指定したいときがあるかもしれない (ない).
そんなとき, 以下のように tilde と caret を使って指定することが出来る.
TILDE ~
~ は同一ブランチの前の世代を指定する.
~{数字} (~3 など) は n 世代前を指す.
CARET ^
^ は親を指定する.
親
commit には最大で二人親がおり, 一人は同一ブランチの前 commit (== 一世代前, ~).
もう一人は Merge 元のブランチの最終 commit である.
後者の親は Merge commit でしか発生しない.
指定方法
- 同一ブランチの親:
^1(^と同値) - Merge 元ブランチの親:
^2
注意
^^ は ^2 と同値ではなく, ^ の ^ である. 同じブランチの親のさらに同じブランチの親なので, 二世代前となり, ~2 と同値.
練習
(github.com/sqrtxx/Kurobako より)
HEAD
git show @
世代の指定
以下の Merge commit を指定する.
b23ab6c Merge pull request #8 from sqrtxx/add-test-group
指定方法は以下のようなものがある.
git show @^^git show @~2
親の指定
以下の commit を指定する.
83d520b Add badge of Travis CI
Merge commit は上より, @~2 で指定できる.
ここから親をたどる. 指定方法は以下のようなものがある.
git show @~2^2git show @^^^2
親の世代の指定
以下の commit を指定する.
0b9073b Add gems for test
上の commit の九世代前となる.
@~2^2 からたどれば良いので,
git show @~2^2~~~~~~~~~git show @~2^2~9git show @~2^2^^^^^^^^^
などのように書ける.

