22. Git 內(nèi)幕:.git 目錄

2018-02-24 16:05 更新

目的

學(xué)習(xí)有關(guān) .git 目錄結(jié)構(gòu)的內(nèi)容。

.git 目錄

是時(shí)候做些瀏覽了。首先,從你的項(xiàng)目根目錄開(kā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 東東所存儲(chǔ)的魔法目錄。讓我們一瞥對(duì)象目錄。

對(duì)象存儲(chǔ)

$ 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

你應(yīng)當(dāng)看到一串包含兩個(gè)字符名稱的目錄。目錄名稱是 Git 中 對(duì)象存儲(chǔ)的 sha1 哈希的開(kāi)頭兩個(gè)字符。

深入對(duì)象存儲(chǔ)

$ ls -C .git/objects/<dir>
$ ls -C .git/objects/09
6b74c56bfc6b40e754fc0725b8c70b2038b91e  9fb6f9d3a104feb32fcac22354c4d0e8a182c1

看看兩字符目錄的其中之一。你應(yīng)當(dāng)看到一些具有 38 個(gè)字符 名稱的文件。這些是 Git 中包含對(duì)象存儲(chǔ)的文件。這些文件 已被壓縮和編碼,所以直接查看它們的內(nèi)容并沒(méi)有什么用處, 但我們將看一點(diǎn)。

配置文件

$ 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

這是項(xiàng)目級(jí)配置文件。在這兒的配置條目將覆蓋你的主目錄 中 .gitconfig 文件中的配置條目,至少對(duì)此項(xiàng)目來(lái)說(shuō)是如 此。

分支與標(biāo)簽

$ 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

你應(yīng)當(dāng)認(rèn)識(shí)標(biāo)簽子目錄中的文件。每個(gè)文件都與你先前使用?git tag?命令所創(chuàng)建的標(biāo)簽相應(yīng)。它的內(nèi)容是綁定到標(biāo)簽 的提交哈希。

heads?目錄與此相似,但它是用于分支而非標(biāo)簽?,F(xiàn)在我 們只有一個(gè)分支,所以你在該目錄中只會(huì)看到 master。

HEAD 文件

$ cat .git/HEAD
$ cat .git/HEAD
ref: refs/heads/master

HEAD 文件包含當(dāng)前分支的引用。此刻它是對(duì)于 master 的引用。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)