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