Skip to main content

Git Object 深入浅析

前文 Git 底层深入浅析 - 目录篇我们讲了git目录下的文件都是什么,最后我们来讲一下git objects

前置知识

  • git cat-file -option xxx: 用来实现所有 Git对象的读取,包括数据对象、树对象、提交对象的查看

我们先了解两个参数-p表示查看Git对象的内容,-t表示查看Git对象的类型,更多请执行git cat-file --help查看。

git-cat-file.png

  • git-hash-object xxx: 用来计算文件内容的 hash 值,并将生成的数据对象存储到 Git 文件系统中。

-w表示将数据对象写入到 Git 文件系统中

--stdin表示从标准输入中获取文件内容

可以使用git hash-object --help来查看他的参数列表。

git-hash-object.png

git objects分类

git objects分为 3类:

  • commit: 对象存储git中的提交信息.
  • tree : 对象存储 git 仓库中的文件元数据信息, 包括文件名及目录结构信息等.
  • blob : 对应的是 git 仓库中的文件内容.
// 查看日志
git log -5

// 查看 Git 对象的类型
git cat-file -t 7369f96

// 查看 Git 对象的内容
git cat-file -p 7369f96

我们先找到一个hash值,然后对这个hash值 执行 git cat-file,我们发现这个hash类型是commit,以及它的内容包括父节点,作者信息,提交者信息等其他信息。

git-log.png

git-cat-file-t.png

git-cat-file-p.png

参考资料

Git内部原理之Git对象

Git 内部原理 - 底层命令和高层命令

这才是真正的GIT——GIT内部原理

这才是真正的GIT——GIT内部原理 - 视频