[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つのコミット(ブランチ)を親にマージしている。

 

家系参照(Ancestry Reference)の例

系譜参照の例1

 

系譜参照の例2

 

Git 公式ドキュメント