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

时间:2009-12-23 23:53:10

标签: git

我在这里看到answer to a question有助于在git中恢复已删除的文件。

解决方案是

git checkout <deleting_commit>^ -- <deleted_file_path>

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

8 个答案:

答案 0 :(得分:117)

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

请记住,git提交可以有多个父级。 HEAD^HEAD^1的缩写,您也可以根据需要解决HEAD^2等问题。

你可以找到任何提交的父母,而不仅仅是HEAD。您也可以追溯到几代人:例如,master~2表示主分支尖端的祖父母,在歧义的情况下偏向第一个父母。这些说明符可以任意链接 ,例如topic~3^2。请参阅What’s the difference between HEAD^ and HEAD~ in Git?

的相关答案

有关完整详细信息,请参阅git rev-parse --help的{​​{3}}部分。

答案 1 :(得分:20)

这意味着“父母”。所以HEAD^表示“当前HEAD的父级”。您甚至可以将它们链接在一起:HEAD^^表示“当前HEAD的父级的父级”(即当前HEAD的祖父级),HEAD^^^表示“父级父级的父级”目前的HEAD“,等等。

答案 2 :(得分:12)

specifying ranges时也可以使用^(插入符号)。

  

要排除提交中可到达的提交,前缀^表示法是   用过的。例如。 ^ r1 r2表示可以从r2到达的提交但不包括那些提交   可从r1到达。

     

<强>&LT; REV&GT;

     

包含可从(即祖先)访问的提交。

     

<强> ^&LT; REV&GT;

     

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

答案 3 :(得分:7)

插入符指的是特定提交的父级。例如。 HEAD^指的是当前HEAD提交的父级。 (另外,HEAD^^指的是祖父母)。

答案 4 :(得分:6)

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

               master  

   A <- B <- C <- D
           /
     E <- F
            feature

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

因此C^1引用BC^2引用FC^C^1的别名。

您只能使用<rev>^3。如果你已经完成了三个分支的合并。

答案 5 :(得分:4)

(^)获取命令的父源,即HEAD ^将获得HEAD的父级。

答案 6 :(得分:3)

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

答案 7 :(得分:1)

格雷格·培根给了一个很好的联系,但它非常密集。 Git在线介绍文档还介绍了修订版和范围说明符:

https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection