search
LoginSignup
18

More than 5 years have passed since last update.

posted at

git 小ネタ: HEAD の省略や TILDE, CARET の使い分け

2014-11-10_10_36_38.png

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 と同値.

練習

 2014-11-10 10.36.38.png

(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^^^^^^^^^

などのように書ける.

Reference

PaulBoxley.com – Git caret and tilde

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
18