目的
學習有關 .git 目錄結構的內(nèi)容。
是時候做些瀏覽了。首先,從你的項目根目錄開始……
$ ls -C .git
$ ls -C .git
COMMIT_EDITMSG ORIG_HEAD hooks logs rr-cache
HEAD config index objects
MERGE_RR description info refs
這是全部 Git 東東所存儲的魔法目錄。讓我們一瞥對象目錄。
$ ls -C .git/objects
$ ls -C .git/objects
09 1f 27 43 69 83 97 af e4 info
0f 22 28 58 6b 94 9c b5 e7 pack
11 24 32 59 78 96 a1 c4 eb
你應當看到一串包含兩個字符名稱的目錄。目錄名稱是 Git 中對象存儲的 sha1 哈希的開頭兩個字符。
$ ls -C .git/objects/<dir>
$ ls -C .git/objects/09
6b74c56bfc6b40e754fc0725b8c70b2038b91e 9fb6f9d3a104feb32fcac22354c4d0e8a182c1
看看兩字符目錄的其中之一。你應當看到一些具有 38 個字符名稱的文件。這些是 Git 中包含對象存儲的文件。這些文件已被壓縮和編碼,所以直接查看它們的內(nèi)容并沒有什么用處,但我們將看一點。
$ cat .git/config
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[user]
name = Jim Weirich
email = jim (at) neo.com
這是項目級配置文件。在這兒的配置條目將覆蓋你的主目錄中 .gitconfig 文件中的配置條目,至少對此項目來說是如此。
$ ls .git/refs
$ ls .git/refs/heads
$ ls .git/refs/tags
$ cat .git/refs/tags/v1
$ ls .git/refs
heads
tags
$ ls .git/refs/heads
master
$ ls .git/refs/tags
v1
v1-beta
$ cat .git/refs/tags/v1
1f7ec5eaa8f37c2770dae3b984c55a1531fcc9e7
你應當認識標簽子目錄中的文件。每個文件都與你先前使用git tag
命令所創(chuàng)建的標簽相應。它的內(nèi)容是綁定到標簽的提交哈希。
heads
目錄與此相似,但它是用于分支而非標簽?,F(xiàn)在我們只有一個分支,所以你在該目錄中只會看到 master。
$ cat .git/HEAD
$ cat .git/HEAD
ref: refs/heads/master
HEAD 文件包含當前分支的引用。此刻它是對于 master 的引用。