10.3 Git 引用

2018-02-24 15:22 更新

Git 引用

我們可以借助類似于?git log 1a410e?這樣的命令來瀏覽完整的提交歷史,但為了能遍歷那段歷史從而找到所有相關對象,你仍須記住?1a410e?是最后一個提交。 我們需要一個文件來保存 SHA-1 值,并給文件起一個簡單的名字,然后用這個名字指針來替代原始的 SHA-1 值。

在 Git 里,這樣的文件被稱為“引用(references,或縮寫為 refs)”;你可以在?.git/refs目錄下找到這類含有 SHA-1 值的文件。 在目前的項目中,這個目錄沒有包含任何文件,但它包含了一個簡單的目錄結構:

$ find .git/refs
.git/refs
.git/refs/heads
.git/refs/tags
$ find .git/refs -type f

若要創(chuàng)建一個新引用來幫助記憶最新提交所在的位置,從技術上講我們只需簡單地做如下操作:

$ echo "1a410efbd13591db07496601ebc7a059dd55cfe9" > .git/refs/heads/master

現在,你就可以在 Git 命令中使用這個剛創(chuàng)建的新引用來代替 SHA-1 值了:

$ git log --pretty=oneline  master
1a410efbd13591db07496601ebc7a059dd55cfe9 third commit
cac0cab538b970a37ea1e769cbbde608743bc96d second commit
fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit

我們不提倡直接編輯引用文件。 如果想更新某個引用,Git 提供了一個更加安全的命令?update-ref?來完成此事:

$ git update-ref refs/heads/master 1a410efbd13591db07496601ebc7a059dd55cfe9

這基本就是 Git 分支的本質:一個指向某一系列提交之首的指針或引用。 若想在第二個提交上創(chuàng)建一個分支,可以這么做:

$ git update-ref refs/heads/test cac0ca

這個分支將只包含從第二個提交開始往前追溯的記錄:

$ git log --pretty=oneline test
cac0cab538b970a37ea1e769cbbde608743bc96d second commit
fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit

至此,我們的 Git 數據庫從概念上看起來像這樣:

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號