Git HEAD^ vs Git HEAD~ vs Git HEAD{@}

John Wachira 2024年2月15日
  1. Git HEAD^ (插入符号)
  2. Git HEAD~ (波浪号)
  3. Git HEAD{@}
Git HEAD^ vs Git HEAD~ vs Git HEAD{@}

本文将讨论 Git 插入符号和 Git 波浪号之间的区别。Git 插入符号用^ 表示,而波浪号用~ 表示。

我们还将讨论 HEAD{@}。让我们直接开始。

Git HEAD^ (插入符号)

当向 Git HEAD 引入插入符号时,我们指向提交的第一个父项。因此 git HEAD^2 指向提交的第二个父项。

提交的父级是什么?

当我们将一个或多个分支与另一个合并时,提交的父级就会发挥作用。让我们看一个例子。

我们的 repo 有绿色的 Master 分支和黄色的 Other-Branch 分支。

git HEAD ^

我们在 other-branch 上的提交 Emaster 分支上的提交 A 合并。因此,我们可以说提交 A 有两个父提交。

因此,父提交只是提交的先前提交。

请看下面的命令。

$ git show HEAD^ --oneline

如果我们在提交 A,运行上面的命令会将我们的 HEAD 移动到提交 B

$ git show HEAD^2 --oneline

另一方面,上面的命令会将我们的 HEAD 转移到提交 E

请注意,HEAD^HEAD^1 的用途相同。

值得注意的是,上面的解释只适用于我们合并了分支的情况。如果你正在使用一个分支,那么 HEAD^将等同于 HEAD~

Git HEAD~ (波浪号)

在我们分支中最后一次提交的上一次提交处的 HEAD 点添加一个波浪号。这就像直线返回。

让我们看一个例子。

git HEAD ~

因此,如果我们的 HEAD 在提交 A,那么 git HEAD~git HEAD~1 将把我们转移到提交 BHEAD~2 将转移我们提交 C

如果我们在 other-branch 的提交 E 处签出,HEAD~1 会将我们转移到提交 F 等等。

Git HEAD{@}

这种组合指向我们本地存储库中特定时间的引用位置。它通常在运行 git reflog 命令时弹出,如下所示。

git reflog 命令

简而言之,当我们在其他分支上合并分支时,插入符号很有用,我们需要切换到不同分支中的提交。波浪号允许我们切换到特定分支中最后一次提交的前一次提交。

在单个分支上工作时,HEAD^HEAD~ 相同。

作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

相关文章 - Git Head