0%

Git底层剖析

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}

欢迎关注我的其它发布渠道