Git HEAD^ vs Git HEAD~ vs Git HEAD{@}
本文將討論 Git 插入符號和 Git 波浪號之間的區別。Git 插入符號用^
表示,而波浪號用~
表示。
我們還將討論 HEAD{@}
。讓我們直接開始。
Git HEAD^
(插入符號)
當向 Git HEAD
引入插入符號時,我們指向提交的第一個父項。因此 git HEAD^2
指向提交的第二個父項。
提交的父級是什麼?
當我們將一個或多個分支與另一個合併時,提交的父級就會發揮作用。讓我們看一個例子。
我們的 repo 有綠色的 Master
分支和黃色的 Other-Branch
分支。
我們在 other-branch
上的提交 E
與 master
分支上的提交 A
合併。因此,我們可以說提交 A
有兩個父提交。
因此,父提交只是提交的先前提交。
請看下面的命令。
$ git show HEAD^ --oneline
如果我們在提交 A
,執行上面的命令會將我們的 HEAD
移動到提交 B
。
$ git show HEAD^2 --oneline
另一方面,上面的命令會將我們的 HEAD
轉移到提交 E
。
請注意,HEAD^
和 HEAD^1
的用途相同。
值得注意的是,上面的解釋只適用於我們合併了分支的情況。如果你正在使用一個分支,那麼 HEAD^
將等同於 HEAD~
。
Git HEAD~
(波浪號)
在我們分支中最後一次提交的上一次提交處的 HEAD
點新增一個波浪號。這就像直線返回。
讓我們看一個例子。
因此,如果我們的 HEAD
在提交 A
,那麼 git HEAD~
或 git HEAD~1
將把我們轉移到提交 B
。HEAD~2
將轉移我們提交 C
。
如果我們在 other-branch
的提交 E
處簽出,HEAD~1
會將我們轉移到提交 F
等等。
Git HEAD{@}
這種組合指向我們本地儲存庫中特定時間的引用位置。它通常在執行 git reflog
命令時彈出,如下所示。
簡而言之,當我們在其他分支上合併分支時,插入符號很有用,我們需要切換到不同分支中的提交。波浪號允許我們切換到特定分支中最後一次提交的前一次提交。
在單個分支上工作時,HEAD^
與 HEAD~
相同。
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