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

Git 插入符号(^)是什么意思?,git,Git,我在这里看到了一个帮助还原git中已删除文件的工具 解决办法是 git checkout <deleting_commit>^ -- <deleted_file_path> git签出^ 插入符号(^)的作用是什么?我在别处看到它在git中做了非常有用的事情。它很神奇。请有人帮我弄坏它,告诉我它的作用是什么?插入符号指的是特定提交的父项。例如,HEAD^指当前HEAD命令的父项。(另外,HEAD^^指祖父母)。意思是“父母”。因此HEAD^表示“当前HEAD的父级”。

我在这里看到了一个帮助还原git中已删除文件的工具

解决办法是

git checkout <deleting_commit>^ -- <deleted_file_path>
git签出^

插入符号(
^
)的作用是什么?我在别处看到它在git中做了非常有用的事情。它很神奇。请有人帮我弄坏它,告诉我它的作用是什么?

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

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

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

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

HEAD^
表示当前分支尖端的第一个父级

请记住,git提交可以有多个父级
HEAD^
HEAD^1
的缩写,您还可以根据需要寻址
HEAD^2
,依此类推

您可以访问任何提交的父级,而不仅仅是
HEAD
。您也可以通过代代向后移动:例如,
master~2
表示主分支尖端的祖父母,在歧义情况下优先于第一个父代。这些说明符可以任意链接 ,例如,
主题~3^2
。见相关答案


有关完整的详细信息,请参阅git rev parse--help的一节,Greg Bacon提供了一个很好的链接,但是它非常密集。Git在线介绍性文档还介绍了修订和范围说明符:

在以下情况下也可以使用
^
(插入符号)

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

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

^

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


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

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

... 仅供windows参考:^在DOS shell中无法正常工作。使用git bash shell,它就会工作。当我尝试使用它时,我甚至没有想到(猜测它的意思)。插入符号(
^
)是cmd.exe中的转义字符。每次我试着用它来看看它是否有用,我实际上什么也没通过,这解释了为什么结果从来没有不同过愚蠢的cmd.exe。您可以通过加倍或引用它来逃避它:
git log master^
git log“master^”
但是,在线性历史上,为什么
HEAD^^^
返回第三个较旧的提交,即它相当于
HEAD~~
?@Vorac用于线性历史,是的。这个链接可能更接近预期的位置。这真的合法吗?合并提交可以包含三个父级吗?合并提交可以有N个父级。常规提交和合并之间的唯一区别是父级的数量。