2017-02-27 61 views
0

我正在閱讀有關git內部信息,它說blob只包含文件的內容。於是我就做好以下git blob的內容是否被加密?

echo "hello world" > a.txt 
git add a.txt 

.git/object有一個文件夾3b18e512dba79e4c8300dd08aeb37f8e728b8dad。 打開它後,有垃圾價值。但運行以下命令,

git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 
// hello world 

因此,cat-file命令肯定知道如何解析blob對象。什麼是blob中的垃圾值,以及cat-file如何解釋它。我確定它是文件的內容,但是它以什麼格式寫成?

+0

沒有。該文件使用哈希來尋址。該blob包含使用zlib壓縮的文件內容,如下所述 –

+0

對不起,您閱讀正確,文件是簡單的壓縮。 – jgritty

回答

1

在blob的情況下,其內容表示blob標頭和內容。您可以通過以下方式進行檢查:

$ openssl zlib -d -in .git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad 
blob 12hello world 

例如。

1

在git中blob是文件的內容。在git中所有的斑點都用zlib和delta壓縮進行壓縮(所以修改不會佔用大量的空間),這就是爲什麼斑點不可讀的原因。 blob的名稱是它的SHA-1散列。

+0

「在git blob中是文件的內容」 - 不完全。在壓縮文件之前,Git會將一個頭文件添加到文件中,並正式將其作爲一個blob。頭由字符串「blob」組成,加上一個空格,加上文件的長度(以字節爲單位),用ASCII碼錶示(如123),後跟一個空終止符,後跟內容爲有問題的文件。在zlib壓縮之前,SHA-1從文件內容+標題計算。 – Jazimov