[git] チルダ(~)とキャレット(^)の違い

チルダ(~)

  • HEAD~ : HEADの親(1世代前)
  • HEAD~~ : HEADの親の親(2世代前)
  • HEAD~2 : HEADの親の親(2世代前)

1番目の親を暗黙的に遡る。親が一つ(merge commitがない)のときはシンプルに指定できる。 HEAD~~HEAD~2の違いはない。

キャレット(^)

  • HEAD^ : HEADの1番目の親(1世代前)
  • HEAD^2 : HEADの2番目の親(1世代前)
  • HEAD^^ : HEADの1番目の親の1番目の親(2世代前)
  • HEAD^2^ : HEADの2番目の親の1番目の親(2世代前)
  • HEAD^2^2 : HEADの2番目の親の2番目の親(2世代前)

親が2つ(merge commitがある)ときに区別できる。HEAD^^HEAD^2は世代もブランチも異なるコミット。

 

1番目の親と2番目の親がある(merge commitがある)ときのgit logの例

36fc76d3ad88d7 の2つのコミット(ブランチ)を親にマージしている。