插入符号(^)是什么意思?

Cha*_* Ma 114 git

我在这里看到了一个问题答案,有助于在git中恢复已删除的文件.

解决方案是

git checkout <deleting_commit>^ -- <deleted_file_path>
Run Code Online (Sandbox Code Playgroud)

插入符(^)的作用是什么?我在其他地方看到它在git中做了非常有用的事情.这很神奇.请有人为我破坏它并告诉我它的作用?

Gre*_*con 129

HEAD^ 表示当前分支的提示的第一个父级.

请记住,git提交可以有多个父级.HEAD^是的缩写HEAD^1,你也可以HEAD^2适当地解决等问题.

你可以找到任何提交的父母,而不仅仅是HEAD.您也可以追溯到几代人:例如,master~2意味着主分支的祖父母,在歧义的情况下支持第一个父母.这些说明符可以被任意连接,例如,topic~3^2.

有关完整的详细信息,请参阅的"指定修订"部分HEAD^.

  • 但是,在线性历史上,为什么“HEAD^^^”返回第三个较旧的提交,即它相当于“HEAD~~~”? (2认同)
  • @Vorac 对于线性历史,是的。 (2认同)

mip*_*adi 20

它的意思是"父母".所以HEAD^意味着"当前HEAD的父母".您甚至可以将它们链接在一起:HEAD^^意味着"当前HEAD的父级的父级"(即当前HEAD的祖父级),HEAD^^^意味着" 当前HEAD 的父级的父级的父级",等等.


cmc*_*nty 15

^(尖)也可以被使用时,指定的范围.

要排除从提交可到达的提交,使用前缀^表示法.例如,^ r1 r2表示可以从r2到达的提交,但不包括从r1可到达的提交.

<转>

包括可以从(即祖先)访问的提交.

^ <转>

排除可从(即祖先)到达的提交.


cdo*_*orn 8

这是一个直观的解释.假设你有这样的历史:

                      master  
  ... <- B <- C <- D
             /
... <- E <- F
              feature
Run Code Online (Sandbox Code Playgroud)

当功能合并到主人时,C创建了两个祖先.Git分配这些祖先数字.主线祖先B分配1,功能祖先F分配2.

因此C^1BC^2F.C^是别名C^1.

你只会用<rev>^3.如果你已经执行了三个分支的合并.


mop*_*oke 7

插入符号指的是特定提交的父节点.Eg HEAD^指的是当前HEAD委托的父代.(也HEAD^^指祖父母).


Amb*_*ber 5

克拉代表提交偏移量(父)。例如,HEAD^表示“来自 HEAD 的一次提交”和HEAD^^^“来自 HEAD 的三次提交”。