Git 树对象

定义

它能解决文件名保存的问题,也允许我们多个文件组织到一起。Git以一种类似于Unix文件系统的方式存储内容。所有内容均以树对象和数据对象(GIt对象)的形式存储。一个树对象可以去包含另一个树对象。

构建树对象

git update-index  --add  --cacheinfo 10064  hash值
--add     此前并不在缓存区中,首次加入必须要 --add
--cacheinfo  因为将要添加的文件在Git数据库,而不是在当前目录下,所以需要--cacheinfo
  • 文件模式
100644,表明这是一个普通文件;
100755,表示一个可执行文件;
120000,表示一个符号链接。

在这里插入图片描述
保存f1并生成hash值
在这里插入图片描述

为暂存区生成快照并保存到objects

git write-tree

在这里插入图片描述
查看生成的类型
在这里插入图片描述
tree被保存到数据库
在这里插入图片描述

查看暂存区

git ls-files -s

在这里插入图片描述

更新f1 存储f2

更新f1后存储,生成新的hash值
在这里插入图片描述

存储f2为git对象
在这里插入图片描述

当前所有数据

$ find .git/objects/ -type f
.git/objects/44/d5f699a169f26bb2bf69cea5a4431cc7a9d2cd   tree对象
.git/objects/93/60a366d14fafd4afc4a8bb2a21a01f54c97dd0   f1的1st版本,git对象
.git/objects/dc/d5456019f4470e5b781702c62271cccb8e8657   f2的首个版本,git对象
.git/objects/f0/b1c0b15065a57025bfd1f1df5c7a035e0f8c1a   f1的2nd版本,git对象

再次构建树对象

将 修改后的 f1 存放如 暂存区,查看后发现,f1.txt 在缓存区的原有版本被覆盖
在这里插入图片描述
将f2.txt对应的git对象,从数据库加入到缓存区,并查看缓存区内容
在这里插入图片描述
生成树对象,查看数据库

.git/objects/1b/cca78c04af12b10e4a2ef6c680dc9a4196a7eb  树对象的第二个版本
.git/objects/44/d5f699a169f26bb2bf69cea5a4431cc7a9d2cd  树对象首个版
.git/objects/93/60a366d14fafd4afc4a8bb2a21a01f54c97dd0  f1.txt的第一个版本
.git/objects/dc/d5456019f4470e5b781702c62271cccb8e8657  f2.txt首个版本
.git/objects/f0/b1c0b15065a57025bfd1f1df5c7a035e0f8c1a  f1.txt第二个版本

在这里插入图片描述

构建第三棵树

git read-tree  --prefix=bak   树对象hash值

在这里插入图片描述
生成新的tree对象

git write-tree

在这里插入图片描述
查看当前数据库对象数,数量+1,到达6

在这里插入图片描述

提交树

提交树,并附加提交的备注信息

echo 'description of commit info' | git commit-tree 缓存区树的hash值

在这里插入图片描述

二次提交对象

-p 指明此次提交的对象的父对象

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值