Git底层剖析
Git中有四个文件很重要,HEAD文件、index文件,objects目录以及refs目录。
- HEAD文件标识当前被检出的分支
- index文件保存暂存区信息
- objects目录存储所有数据内容
- refs目录存储指向分支的提交对象的指针
objects目录内容
之前的文章中有说过本地库是存在.git目录下的objects文件夹中,而且文件夹名为commit_id的前两位,文件名为commit_id的另外38位,那这里边记录的是什么呢,记录的是commit对象
Git底层有三种类型的对象
- commit 提交对象,记录版本提交时间、版本作者、版本序列等
- tree 树对象,记录目录结构
- blob 数据对象,记录文件的真实内容
底层命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #查看数据类型 git cat-file -t commit_id #示例 git cat-file -t 25f2be2ccf37ae072f6b42dccaa73ce2335bc99e tree
#展示数据内容 git cat-file -p commit_id #示例 git cat-file -p 25f2be2ccf37ae072f6b42dccaa73ce2335bc99e 040000 tree 20d49ee3f07f1493accec51d417001c12532f289 WebContent 040000 tree ae9144c38e601d6409d02b55fa768ffc353158a2 java 040000 tree 7dd222c1490260e0f5423ab3f905d3ab1ebd7598 resources
# 查看master分支上最新的提交对象所指向的tree对象内容,其内存储的是文件名,对象类型 git cat-file -p master^{tree}
|