一,将对象增加到暂存区

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


1,将第一个对象加入到暂存区先:

此时的哈希值是第一个树对象。

这样一来,就在暂存区中有了第一个树对象):

上图中第一个便是第一个树对象,现在从库里复制到暂存区来了,后两个则是第二个树对象包含的文件(git对象)。

但实际上,到这里第三个树对象还没有完全生成,还需要把它搞进库里。

再看看版本库:

三个文件对象,三个树对象了。
查看这第三个树对象的内容:

也就是说,第三棵树对象的快照如下图:

但是这样在实际中没啥用,因为第三个树对象没变更啥,,,

问题

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

二,提交对象


2-1,现在来为第一个树对象创建提交对象:

2-2,查看生成的对象的类型为提交对象

2-3,查看此提交对象的内容:

在这里就会看到是谁修改的,修改了那些内容。
也就是我们之前的做法,都漏了一步提交对象,应该每次生成一个树对象,就应该创建一个提交对象。用以存储变更的具体信息。

2-4,现在来创建第二个树对象的提交对象,因为已经有第一个提交对象了,所以创建第二个提交对象时,有一点小小的区别,需要把前一个提交对象连接起来。


查看第二次创建的提交对象的信息:

于是,这样做下去的话,示意图会变成

也就是说,真正代表一个项目版本的,应该是提交对象。我们需要直接访问提交对象。虽然树才是一次版本的封装,但是提交对象是这个树对象和版本变更信息的封装。
而且,提交对象是链式的!
也就是说一个合格的提交对象至少包哈三个部分内容

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

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

git学习笔记-(6-提交对象)相关推荐

  1. Git学习笔记使用记录

    文章目录 Git学习笔记 基本 配置环境 Install 初始化workspace Git 全局设置Global Configuration: 配置账户 创建项目仓库Create project re ...

  2. Git 学习笔记:5 分布式工作流程

    Git 学习笔记:5 分布式工作流程 分布式工作流程 集中式工作流 集成管理员工作流 司令官与副官工作流 工作流程总结 向一个项目贡献 提交准则 私有小型团队 John's Machine 私有管理团 ...

  3. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

  4. ​​​​​​​Git学习笔记与IntelliJ IDEA整合

    2019独角兽企业重金招聘Python工程师标准>>> Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:htt ...

  5. Git 学习笔记:自定义Git(完)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  6. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  7. Git学习笔记:分支管理3

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  8. Git学习笔记:分支管理(2)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  9. Git学习笔记:分支管理(1)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  10. Git学习笔记:远程仓库

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

最新文章

  1. 在Linux系统下编译并执行C++程序
  2. 对计算机的理解大一1000,大一计算机实训报告总结范文-求计算机实习报告1000字左右,急急急?...
  3. JS对以对象组成的数组去重
  4. Linux高级编程(四)
  5. python jpg 压缩因子_IOS图像2之jpg、png图片保存、互转、设置有损压缩因子
  6. 如何进行ASP.NET MVC 的测试
  7. 数学模型——药物中毒急救模型(基于python)
  8. golang区块链开发的视频教程推荐
  9. 华东师范大学2020计算机研究生招生简章,2020华东师范大学计算机考研大纲
  10. mysql 查询 本周 上周,Mysql查询本周,上周,本月,上月数据
  11. 02-DDL 数据定义语言
  12. 音乐能力与计算机能力结合,作曲与作曲技术理论专业(计算机作曲与音乐制作)培养方案...
  13. [置顶] 得失寸心知
  14. PMP考试如何获取PDU
  15. java arthas使用
  16. 需求与商业模式创新-需求6-涉众分析与硬采样
  17. 华为java 优招面试题_华为面试题及答案
  18. 游戏服务端框架之本服实时排行榜
  19. linux实验三:基于mykernel 2.0编写一个简单的操作系统内核
  20. hbase热点问题解决(预分区)

热门文章

  1. (详细带你分析错误):No property 属性名 found for type 类名,总结了其他解决办法
  2. 91.解码方法(力扣leetcode) 博主可答疑该问题
  3. 7 ida pro 网盘_7月上市新车汇总 日产轩逸领衔 自主高端红旗HS7最具潜力
  4. python异步IO编程(一)
  5. [USACO10FEB]购买巧克力Chocolate Buying
  6. JSON转换和序列化的区别
  7. Linux _ Day8 Shell编程之字符截取命令
  8. 【日常学习】【二叉树遍历】Uva548 - Tree题解
  9. 灰度图像--频域滤波 概论
  10. Feign 集成 Hystrix实现不同的调用接口不同的设置