Git學習筆記(2) --- References探尋
在上一篇文章 Git學習筆記(1) --- 內部儲存模式 中,已經說了git的內部儲存模式以及 .git/objects
檔案中的內容,這一篇文章主要講講git內部的references。
References簡介
git 除了會儲存提交歷史,還會儲存當前倉庫裡有哪些分支,哪些tag,以及他們各自對應的commit id;還有當前的HEAD的指向。而這些都是references的工作。
references的本質是:用於儲存指向特定commit的指標。主要包括以下幾個內容:
- tags:存放所有的tag檔案
- branches:存放所有的brach檔案
- HEAD: 儲存當前操作的commit指向

references 內容
References內容
braches資料夾會儲存當前倉庫所有的分支,併為每一個分支建立一個單獨的檔案,分支名就是檔名,如上圖,當前倉庫就只有一個master分支。
那master檔案裡面儲存的是什麼呢?

master檔案內容
從上圖可以看出,master分支當前的最新的提交是 adf0e13
,所以master檔案儲存的就是最新提交的commit id。另外,此時HEAD指標是直接指向master,和master對應的是同一個commit,所以此時HEAD檔案內容就是:

HEAD檔案內容
如果HEAD指向commit和其他的分支最新提交是一致的,那麼HEAD檔案的內容就和上圖類似,不同就是分支名;如果HEAD是指向其他的commit,與所有的分支指向的都不一致時( 例如checkout到之前的提交 ),此時HEAD檔案直接儲存所指向的commit id,與master檔案類似。
此外,tags檔案的儲存模式與braches的儲存模式一致,因此不再贅述。
如果對本文有什麼意見和建議,歡迎討論和指正!!!