【问题标题】:What does the caret (^) character mean in Git?Git 中的插入符号 (^) 字符是什么意思?
【发布时间】:2010-12-29 16:25:31
【问题描述】:

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

解决办法是

git checkout <deleting_commit>^ -- <deleted_file_path>

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

【问题讨论】:

  • Windows 上的仅供参考:^ 在 DOS shell 中无法正常工作。使用 git bash shell 然后就可以了。
  • 当我尝试使用它时(猜测它的含义),我什至没有想到。插入符号 (^) 是 cmd.exe 中的转义字符。每次我尝试使用它来查看它是否有帮助时,我实际上什么都没通过,这就解释了为什么结果从来没有不同。 >_> 愚蠢的 cmd.exe。您可以通过加倍或引用来逃避它:git log master^^git log "master^"

标签: git


【解决方案1】:

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

请记住,git 提交可以有多个父级。 HEAD^HEAD^1 的缩写,也可以酌情寻址HEAD^2 等。

您可以联系到任何提交的父母,而不仅仅是HEAD。您也可以通过世代向后移动:例如,master~2 表示 master 分支尖端的祖父母,在有歧义的情况下偏爱第一个父母。这些说明符可以任意链接 ,例如topic~3^2。查看What’s the difference between HEAD^ and HEAD~ in Git?的相关回答

有关详细信息,请参阅git rev-parse --help“Specifying Revisions” 部分。

【讨论】:

  • 但是,在线性历史上,为什么HEAD^^^ 返回第三个较旧的提交,即它等同于HEAD~~~
  • @Vorac 对于线性历史,是的。
【解决方案2】:

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

                      master  
  ... <- B <- C <- D
             /
... <- E <- F
              feature

当功能合并到主控时,C 是用两个祖先创建的。 Git 分配这些祖先编号。主线祖先B 分配为1,特征祖先F 分配为2。

因此C^1 指的是BC^2 指的是FC^C^1 的别名。

你只会使用&lt;rev&gt;^3。如果您执行了三个分支的合并。

【讨论】:

  • 这真的合法吗?一个合并提交可以包含三个父节点吗?
  • 一个合并提交可以有 N 个父节点。常规提交和合并之间的唯一区别是父级的数量。
【解决方案3】:

Greg Bacon 提供了一个很棒的链接,但它非常密集。在线 Git 介绍文档还介绍了修订和范围说明符:

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

【讨论】:

【解决方案4】:

^(插入符号)也可以用于specifying ranges

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

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

^

排除可从(即祖先)访问的提交。

【讨论】:

  • 是的,这正是我要寻找的。​​span>
【解决方案5】:

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

【讨论】:

    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          猜你喜欢
          • 2010-09-17
          • 2010-09-29
          • 2011-04-18
          • 2012-04-30
          • 1970-01-01
          相关资源
          最近更新 更多