Git命令中HEAD 和HEAD 區別

2021-08-27 18:33:19 字數 3440 閱讀 4373

##說明

本篇文章是對pro git 7.1 git 工具 - 選擇修訂版本 章節中 祖先引用 的總結。

##git命令中head^和head~區別。

使用場景:如果想獲取乙個提交的第幾個父提交使用head+數字,想獲取乙個提交的上幾個提交使用head~。head和head或head^^和head

並沒有區別,只有head^+數字才和head有區別。

我們現在有個乙個master分支,我們通過在master分支執行這兩個命令了來了解一下他們之間的區別,當前master分支提交記錄如下:

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git log --oneline --graph

* ae64286 (head -> master) merge branch 'iss11'

|\| * 34af7c6 (iss11) 新增 run()

* | 247c954 新增 testrun()

|/* 79779c7 新增 main()

* d44c096 merge branch 'dev' 將dev分支內容合併到master分支

|\| * 89a6a5a (dev) 介紹你可以向檔案寫入什麼內容

* | bd61a96 新增介紹說明

|/* 01833f9 新增檔案型別說明

* 5f19dbf 新建檔案a.txt和b.txt

##1,head^

###1.1,最新一次提交的第乙個父提交。

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git show head^1

commit 247c954617cdcb457ced546bb7244ce61b3ccc2b

author: zhangxy <[email protected]>

date: 2018-08-30 10:33:26 +0800

新增 testrun()

diff --git a/b.txt b/b.txt

index 3473edf..5fe14d5 100644

--- a/b.txt

+++ b/b.txt

@@ -1 +1,4 @@

my name is b file

+public void testrun()

###1.2,最新一次提交的第二個父提交

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git show head^2

commit 34af7c6b386f5e09d24340e0f8a1b1f6b5bfd47d (iss11)

author: zhangxy <[email protected]>

date: 2018-08-30 10:30:19 +0800

新增 run()

diff --git a/a.txt b/a.txt

index d196d14..50e3bfc 100644

--- a/a.txt

+++ b/a.txt

@@ -5,3 +5,8 @@ my name is file a

public static void main(string args)

+ +public void run()

###1.3,最新一次提交的上兩個提交。

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git show head^^

commit 79779c75aeea6a4f514d1c77db5d86431011e117

author: zhangxy <[email protected]>

date: 2018-08-30 10:26:15 +0800

新增 main()

diff --git a/a.txt b/a.txt

index 759ac2f..d196d14 100644

--- a/a.txt

+++ b/a.txt

@@ -2,3 +2,6 @@ my name is file a

我是乙個txt型別檔案

你可以輸入漢子並不會出現亂碼

你可以向這裡寫入字元

+public static void main(string args)

##2,head~

###2.1,最新一次提交的上兩個提交。

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git show head~2

commit 79779c75aeea6a4f514d1c77db5d86431011e117

author: zhangxy <[email protected]>

date: 2018-08-30 10:26:15 +0800

新增 main()

diff --git a/a.txt b/a.txt

index 759ac2f..d196d14 100644

--- a/a.txt

+++ b/a.txt

@@ -2,3 +2,6 @@ my name is file a

我是乙個txt型別檔案

你可以輸入漢子並不會出現亂碼

你可以向這裡寫入字元

+public static void main(string args)

##3,head^和head~結合使用

###3.1,想獲取89a6a5a提交物件。

administrator@user-20171018vx mingw64 /d/branch-test (master)

$ git show head~3^2

commit 89a6a5a6f544ff74cc49341aab1484b084be7759 (dev)

author: zhangxy <[email protected]>

date: 2018-08-29 21:23:50 +0800

介紹你可以向檔案寫入什麼內容

diff --git a/a.txt b/a.txt

index e5f555c..0cde68b 100644

--- a/a.txt

+++ b/a.txt

@@ -1,2 +1,3 @@

my name is file a

我是乙個txt型別檔案

+你可以向這裡寫入字元

理解git中的head和master

在master分支上,head指向master,而master指向的是最近的一次提交。如下圖 當我們新建分支時,比如新建分支dev,dev會指向當前master分支的最近一次提交。當我們使用命令 git checkout dev切換到dev分支後,head就指向當前分支dev了。在dev上修改,比如...

理解Git中的HEAD和master

在master分支上,head指向master指標,而master指標指向的是最近的一次提交。如下圖 當我們新建分支時,比如新建dev分支,dev指標會指向當前master分支的最近一次提交。如下圖 切換到dev分支後,head指標就指向dev指標了。在dev分支上修改,然後提交,dev指標指向當前...

linux命令 head 命令

head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。1 命令格式 head 引數 檔案 2 命令功能 head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應檔案的...