2017-02-27 64 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