git学习笔记-(6-提交对象)

一,将对象增加到暂存区

上篇文章中,已经构建的库中应该存在下图这样的文件了。

在这里插入图片描述


1,将第一个对象加入到暂存区先:
在这里插入图片描述
此时的哈希值是第一个树对象。
在这里插入图片描述
这样一来,就在暂存区中有了第一个树对象):
在这里插入图片描述
上图中第一个便是第一个树对象,现在从库里复制到暂存区来了,后两个则是第二个树对象包含的文件(git对象)。

但实际上,到这里第三个树对象还没有完全生成,还需要把它搞进库里。
在这里插入图片描述
再看看版本库:
在这里插入图片描述
三个文件对象,三个树对象了。
查看这第三个树对象的内容:
在这里插入图片描述
也就是说,第三棵树对象的快照如下图:
在这里插入图片描述
但是这样在实际中没啥用,因为第三个树对象没变更啥,,,

问题

现在有三个树对象(执行了三次 write-tree),分别代表了我们想要跟踪的不同项目快照。然而问题依旧:若想重用这些快照,你必须记住所有三个SHA-1 哈希值。 并且,你也完全不知道是谁保存了这些快照,在什么时刻保存的,以及为什么保存这些快照。 而以上这些,正是提交对象(commit object)能为你保存的基本信息

二,提交对象

在这里插入图片描述
2-1,现在来为第一个树对象创建提交对象:
提交的哈希值是对应的树对象的哈希值
2-2,查看生成的对象的类型为提交对象
在这里插入图片描述
2-3,查看此提交对象的内容:
在这里插入图片描述
在这里就会看到是谁修改的,修改了那些内容。
也就是我们之前的做法,都漏了一步提交对象,应该每次生成一个树对象,就应该创建一个提交对象。用以存储变更的具体信息。

2-4,现在来创建第二个树对象的提交对象,因为已经有第一个提交对象了,所以创建第二个提交对象时,有一点小小的区别,需要把前一个提交对象连接起来。
在这里插入图片描述
在这里插入图片描述
查看第二次创建的提交对象的信息:
在这里插入图片描述
于是,这样做下去的话,示意图会变成
在这里插入图片描述
也就是说,真正代表一个项目版本的,应该是提交对象。我们需要直接访问提交对象。虽然树才是一次版本的封装,但是提交对象是这个树对象和版本变更信息的封装。
而且,提交对象是链式的!
也就是说一个合格的提交对象至少包哈三个部分内容

  1. 当前版本(树对象)
  2. 上一个版本的提交对象的哈希值(索引)
  3. 本次变更的信息

此时,你的objects目录下存着所有的版本信息,如果需要回溯版本,只要找到对应提交对象的哈希值,就可以直接跳过去。
也就是树对象,git对像,你压根就不用管,你只要知道提交对象的哈希值就可以了!!!因为外部会有一个指针来指向你需要的版本对应的提交对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值