【学了就忘】Git原理 — 15、Git对象[blob对象]

Git深度解析:blob对象详解
本文详细介绍了Git中的blob对象,包括其定义、存储方式、创建与查看内容的方法。blob对象是Git用来存储文件内容的数据对象,通过键值对的形式进行管理,键为40位的16进制散列码。Git核心是一个简单的键值数据库,内容寻址并压缩存储。文章还探讨了为何Git不直接存储文件名,而是通过树对象来管理文件结构。

Git 是一套内容寻址文件系统。什么意思呢?

就是Git的核心部分是一个简单的键值数据库(key-value data store)。你可以向该数据库插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。

(一)Git对象的存放目录

Git中对象都保存在本地版本库的.git/objects 目录(即:对象数据库)中。

首先初使化一个赶紧的Git仓库:

# 创建一个本地的git仓库git_learning
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository
$ mkdir git_learning

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository
$ cd git_learning/

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning
$ git init
Initialized empty Git repository in J:/git-repository/git_learning/.git/

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (master)
$ ll -a
total 8
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ./
drwxr-xr-x 1 L 197121 0  4月 10 20:23 ../
drwxr-xr-x 1 L 197121 0  4月 10 20:24 .git/

确认 objects 目录是默认初始状态:

# 查看.git/objects/目录
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (master)
$ ll -a .git/objects/
total 4
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ./
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ../
drwxr-xr-x 1 L 197121 0  4月 10 20:24 info/
drwxr-xr-x 1 L 197121 0  4月 10 20:24 pack/

# 查看info目录和pack目录中的内容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (master)
$ ll -a .git/objects/info/
total 0
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ./
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ../

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (master)
$ ll -a .git/objects/pack/
total 0
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ./
drwxr-xr-x 1 L 197121 0  4月 10 20:24 ../

从上可以看到Git初始化一个本地版本库的时候,就已经初始化了objects目录,并在其中创建了packinfo子目录,但是没有其他常规文件,packinfo子目录中也没有文件。我们只关注objects目录下除了infopack目录之外的变化。

(二)Git中对象类型

Git中对象类型有四种:blob(块)对象,tree(目录树)对象,commit(提交)对象和tag(标签)对象,这四种原子对象构成了Git高层数据结构的基础。

(三)blob对象

1、blob对象说明

(1)blob对象定义

blob对象有叫数据对象。

blob对象是用来存储文本内容的。即把一个文本文件的内容,作为一个blob对象存储在Git系统中。

翻译:

  • Git中blob对象就是对应文件系统中的文件,确切的说是文件的内容,包含
    键:一个hash值和校验值的组合,
    值:文件的内容。
  • 比较特殊的是:blob对象只存内容,不存文件名,文件名在tree对象中保存。

blob对象存储方式如下图

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值