git中〜和^之间的区别是什么

时间:2013-02-06 16:16:52

标签: git

很久以前我问过this问题,但我仍然不知道在这个答案中做什么和^意味着什么:

  

如果你在谈论一个远程分支,比如origin / master,你可以   使用〜和^来指代祖先提交相对于一个分支相同   您可以使用本地分支机构

有什么区别?

3 个答案:

答案 0 :(得分:5)

^表示“(第一个)父母”。 ~是类似的,但它需要一个数字作为参数,基本上意味着“祖先”。所以,例如:

HEAD            = latest commit
HEAD^  = HEAD~1 = parent of latest commit
HEAD^^ = HEAD~2 = grandparent of latest commit
HEAD~100        = 100th ancestor of latest commit

答案 1 :(得分:4)

正如the manpage所述:

  

<rev>^, e.g. HEAD^, v1.5.1^0
      修订参数的后缀^表示该提交对象的第一个父级。 ^<n>表示<n>个父级(即<rev>^等同于<rev>^1)。 [...]

     

<强> <rev>~<n>, e.g. master~3
      修订参数的后缀~<n>表示提交对象,它是指定提交对象的<n>代祖先,仅跟随第一个父对象。即<rev>~3相当于<rev>^^^,相当于<rev>^1^1^1

答案 2 :(得分:4)

根据this document,代字号(〜)引用提交的线性祖先(父母,祖父母,曾祖父母),而插入符号(^)引用多个父母。在存在多个合并祖先的情况下,每个合并源都是父级。