Git 原理笔记--文件存储

原创
2018/05/10 10:03
阅读数 266

 

Git 是一套内容寻址 (content-addressable) 文件系统

底层命令和高层命令

这部分命令一般被称作“底层(plumbing)”命令,而那些更友好的命令则被称作“高层(porcelain)”命令。

目录结构

 

目录功能:

 objects 目录存储所有数据内容;refs 目录存储指向数据(分支)的提交对象的指针;HEAD 文件指示目前被检出的分支;index 文件保存暂存区信息

 

Git 对象

Git 的核心部分是一个简单的键值对数据库(key-value data store)。

主要的 Git 对象——数据对象、树对象、提交对象(“blob”“tree” “commit” )——最初均以单独文件的形式保存在 .git/objects 目录下

简化版的 Git 数据模型。

 

 

 

对象存储

Git 会将上述头部信息和原始数据拼接起来,并计算出这条新内容的 SHA-1 校验和。Git 会通过 zlib 压缩这条新内容。

sha1计算:

sha1sum "blob #{content.length}\0content"

SHA-1 值的前两个字符作为子目录名称,后 38 个字符则作为子目录内文件的名称

 

参考:

https://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-%E5%BA%95%E5%B1%82%E5%91%BD%E4%BB%A4%E5%92%8C%E9%AB%98%E5%B1%82%E5%91%BD%E4%BB%A4

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部