【Git、GitHub、GitLab】六 GIT中commit、tree和blob三个对象之间的关系

上一篇文章学习了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基本命令之创建仓库并向仓库中添加文件

该仓库的根目录下的内容如下图;
【Git、GitHub、GitLab】六 GIT中commit、tree和blob三个对象之间的关系_第1张图片

下图是针对上述仓库中,commit、tree以及blob三者之间的关系。

【Git、GitHub、GitLab】六 GIT中commit、tree和blob三个对象之间的关系_第2张图片

其中注意一点:blob是根据文件的内容来区分的,只要文件内容一样,就只有一个blob,与文件名没有任何关系,大大的节约了存储空间

  • 新建的Git仓库,有且仅有1个commit,仅仅包含 /doc/readme ,请问内含多少个tree,多少个blob?

【Git、GitHub、GitLab】六 GIT中commit、tree和blob三个对象之间的关系_第3张图片

  • 一共包含两个tree,一个blob,一个commit。如上图所示。

你可能感兴趣的:(Git,GitHub,GitLab学习记录,Git,GitHub,GitLab学习专栏)