我曾经提出过这个问题,但我仍然不知道该回答中的 ~ 和 ^ 代表什么:
如果你在谈论远程分支,比如 origin/master,你可以使用 ~ 和 ^ 来相对于分支引用祖先提交,就像在本地分支中一样。
它们之间的区别是什么?
^
表示“(第一个)父级”,~
类似,但它需要一个数字作为参数,基本上表示“祖先”。因此,例如:
HEAD = latest commit
HEAD^ = HEAD~1 = parent of latest commit
HEAD^^ = HEAD~2 = grandparent of latest commit
HEAD~100 = 100th ancestor of latest commit
如manpage中所述:
<rev>^,例如HEAD^,v1.5.1^0
修订参数后缀^表示该提交对象的第一个父对象。^<n>
表示第个父对象(即<rev>^
等同于<rev>^1
)。[...]
<rev>~<n>,例如master~3
修订参数后缀~<n>
表示命名提交对象的第代祖先提交对象,仅遵循第一个父对象。即<rev>~3
等同于<rev>^^^
,相当于<rev>^1^1^1
。