下面说点git比较深层的东西, 可以很好地帮助理解git的工作原理。

在git的世界里, 有四种类型的object, 分别是tree | blob | commit | tag

笼统地说, tree代表的是目录结构, 或者简单地理解为代表一个目录。

blob用来存储文件内容, 或者说表示一个文件。

commit 存储一次提交的信息,包括所在的tree,parent是谁,作者及message等信息。

tag 就是标签的意思, 实际就是commit的别名。
关系图如下:
Git之cmmit、tree、blob三个对象的关系

根据图实践验证如下:
git branch -av
Git之cmmit、tree、blob三个对象的关系
git cat-file -p 7c45742
Git之cmmit、tree、blob三个对象的关系
出现tree,拿tree的哈希值进行查内容
Git之cmmit、tree、blob三个对象的关系
查blob内容
Git之cmmit、tree、blob三个对象的关系
对于一个git project, 使用git cat-file -p commitID^{tree}, 可以得到commitID指向的tree-blob的结构图。

e.g. git cat-file -p HEAD^{tree} 得到是当前HEAD对应的tree-blob结构如下:

对于blob, 使用git show eec17xxx可以得到文件的内容。

对于commit可以通过git log 或者git show -s --pretty=raw xxxx(commitID)得到commit的具体信息。

对于tag, 可以通过 git cat-file tag xxxx(tag名字), 得到tag的具体信息。

相关文章:

  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2021-08-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-06
  • 2021-09-02
  • 2021-04-26
  • 2021-11-09
  • 2022-12-23
  • 2021-12-02
相关资源
相似解决方案