上一篇文章学习了git裸仓库.git中的内容,点击查看上一篇文章:【Git、GitHub、GitLab】五 git中裸仓库.git下的内容
本篇文章记录学习git中commit、tree和blob三个对象之间的关系。
首先需要会使用下面的命令:
- cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
- ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
- git cat-file -t + 对象哈希值 命令 , 查看 git 对象的类型
- git cat-file -p + 对象哈希值 命令, 查看 git 对象的内容
- git cat-file -s + 对象哈希值 命令, 查看 git 对象的大小
注意,在使用对象的哈希值的时候可以只取前几位数字,只要git不保存就行
- commit我们很熟悉了
- tree就类似于一棵树,这棵树下还存有其他的tree或者其他的blob文件
- blob就是一个文件,是可以显示的文件。也就是可以使用git cat-file -p + 对象哈希值 来查看blob对象存的内容。
下面我们以之前我们做建立的git仓库为例,说明一下commit、tree、blob之间的关系,点击链接查看之前建立仓库的文章:【Git、GitHub、GitLab】三 Git基本命令之创建仓库并向仓库中添加文件
该仓库的根目录下的内容如下图;
下图是针对上述仓库中,commit、tree以及blob三者之间的关系。
其中注意一点:blob是根据文件的内容来区分的,只要文件内容一样,就只有一个blob,与文件名没有任何关系,大大的节约了存储空间
- 新建的Git仓库,有且仅有1个commit,仅仅包含 /doc/readme ,请问内含多少个tree,多少个blob?
- 一共包含两个tree,一个blob,一个commit。如上图所示。