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^2
git show @^^^2
親の世代の指定
以下の commit を指定する.
0b9073b Add gems for test
上の commit の九世代前となる.
@~2^2
からたどれば良いので,
git show @~2^2~~~~~~~~~
git show @~2^2~9
git show @~2^2^^^^^^^^^
などのように書ける.