Git之cmmit、tree、blob三个对象的关系

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

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

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

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

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

tag 就是标签的意思, 实际就是commit的别名。
关系图如下:
在这里插入图片描述

根据图实践验证如下:
git branch -av
在这里插入图片描述
git cat-file -p 7c45742
在这里插入图片描述
出现tree,拿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的具体信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值