Git objects
是git
的实际存储数据,是git repository
的重要组成部分,也是不可改变的。所有的git objects
都存储在Git Object Database
。每个object
都是压缩(使用Zlib
)的,通过内容的SHA-1
值和一个头可以访问(Each object is compressed (with Zlib) and referenced by the SHA-1 value of its contents plus a small header.
)。
(1)The Blob
Git
中的文件内容存储成blob
(要注意是内容,不是文件。文件的名字和模式不存储在blob
。因此如果两个文件内容相同,则只会存储一份blob
):
(2)The Tree
Git
中的文件夹对应为tree
。Tree
中含有这个tree
包含的blob
和tree
的名字,模式,类型和SHA
等信息:
(3)The Commit
Commit
非常简单,只是指向了一个tree
,并且包含了作者,提交者,提交信息,和所有的直属parent commit
:
(4)The Tag
Tag
为某个commit
提供了一个永久的shorthand name
,它包含object
、类型、tag
、tag
作者和tag
信息:
参考资料:
Git internals。