我很久以前问过这个问题,但我仍然不知道在这个答案中 ~ 和 ^ 是什么意思:
如果你在谈论一个远程分支,比如 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
正如手册页所述:
<rev>^, e.g. HEAD^, v1.5.1^0
修订参数的后缀 ^ 表示该提交对象的第一个父对象。^<n>
表示第<n>
th 父级(即<rev>^
等同于<rev>^1
)。[...]
<rev>~<n>, e.g. master~3
~<n>
修订参数 的后缀表示作为指定提交对象的<n>
第代祖先的提交对象,仅在第一个父对象之后。ie<rev>~3
等价于<rev>^^^
which 等价于<rev>^1^1^1
.
根据此文档,波浪号 (~) 引用提交的线性祖先(父母、祖父母、曾祖父母),而插入符号 (^) 引用多个父母。在有多个合并祖先的情况下,每个合并源都是父级。