git数据模型

一.准备工作
1.初始化仓库
$ git init 在当前工作目录下创建一个 .git目录,其结构如下:
主要关注objects目
在这里插入图片描述2.提交文件
touch Main.java
输入内容

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

touch README.md
输入内容: this is my first java project!
3.提交
git add .
git commit -m 'Initial Commit'

二.模型的创建
在这里插入图片描述

1.blob object
在.git/objects下我们注意到每个目录的名称只有 2 个字符长度, Git 为每个对象生成一个 40 个字符的校验和(SHA-1)哈希,该校验和的前两个字符用作目录名,另外 38 个字符用作文件(对象)名。
当我们提交一些文件时, git 创建的第一类对象是blob object, 在我们的例子中是两个, 每一个blob object对应我们提交的每一个文件:
在这里插入图片描述
blob object 包含文件的快照以及拥有文件校验和.
2. tree object 代表一个文件夹
git 创建的另外一种对象是tree object, 在我们的例子中只有一个, 它包含我们项目中所有文件的列表, 其中包含分配给它们的 blob object 的指针 (这就是 git 如何将文件与 blob object 相关联)
在这里插入图片描述

3.commit object
在这里插入图片描述
三.查看模型
1.查看commit object
git log
在这里插入图片描述
2.查看tree commit
git cat-file commit 【commit object】
在这里插入图片描述
3.查看blob object
git ls-tree 【tree object】
在这里插入图片描述
4.查看blob object的关联文件内容
git cat-file blob
在这里插入图片描述
四.修改的提交
新的提交会产生新的 commit object,指向上一次的commit object(即父提交)
同时指向本次提交的tree object
tree object 会指向修改的文件所产生的新blob object.若文件未修改,则指向旧的blob object
在这里插入图片描述
五.删除的提交
删除的提交,只需要删除tree object 指向 blob object 的指针即可
六.文件夹的处理
tree object的嵌套即代表了 文件夹的嵌套

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值