.git文件夹分析

文件夹分析
在这里插入图片描述
hook:存放一些sheel的地方。
info:存放仓库的信息
object:存放所有git对象的地方
refs:存放提交hash的地方
config:github的配置信息
description:仓库的描述信息,主要给gitweb等git托管系统使用
HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值

0x01 资料
git是一套内容寻址文件系统。

1.寻址方式
git采用HashTable的方式进行寻找。
这里使用的key就是文件(头+内容)的哈希值,value就是经过压缩后的文件内容

2.git对象的类型
Blob
tree
commit

3.Blob
blob对象可以存储所有的文件类型。

4.tree
tree对象是用来组织Blob对象的一种数据类型。树节点

5.commit
父节点

6.Git对象的存储方式
Key = sha1(file_header + file_content)
Value = zlib(file_content)

40位的sha-1校验和,将该校验和的前2位作为object目录中的子目录的名称,后38位作为子目录中的文件名

00000000

通常会用到的利用工具 GitHack ,这个工具下载下来之后操作也特别简单。

GitHack.py http://www.localhost.test/.git/

它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐