git存储原理

一, git 中的存储分为四种对象分别是:commit对象,tag对象,tree对象,blob对象
commit对象:每个执行git commit 时都会产生;
tag对象:执行git tag时会产生;
tree对象:执行git commit时会产生一个顶级树对象,就是对应着目录
blob对象:具体存储数据的文件

git仓库中会又一个隐藏文件.git使用ls -a可以查看
其中有个objects文件夹存储的就是每个对象,
执行find .git/objects -type f 可以查看每个对象
在这里插入图片描述
这里包含了上述的四种对象。
使用git cat-file -p hash码,可以查看对象信息
在这里插入图片描述
可以看到这里包含了顶级树对象,上一次提交的commitId和其他信息。
可以一直使用git cat-file -p 直到看到了blob对象的内容。

二,git中存储对象是通过key,value形式的,key是通过内容hash的到的,value是具体的内容(zlib压缩的),所以即使文件的文件名,位置改变了,还是不会产生新的blob对象。
大致结构如下图:类似树的结构
在这里插入图片描述

三,git中的每个分支其实就是一个引用,存储在.git/refs/ 下,这里存储着很多分支文件,内容就是最新一次提交的commitId,然后.git/HEAD下存储着当前的分支。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值