开启生长之旅!这是我参加「日新方案 12 月更文挑战」的第20天,点击检查活动概况
在.git文件中咱们经过
git cat-file -t
指令,能够检查文件类型
.然后就引出了咱们的主角blob目标.上文中侧重点在于解说.git文件
变化.今天咱们好好欣赏一下新目标blob.
您能在这里看到啥
- Git目标
- blob目标
Git目标
-
引言
Git是一个内容寻址文件体系,Git的核心部分就是一个简略的
键值对数据库
.你能够向Git
库房刺进恣意类型的内容.它会回来一个仅有的键.经过该键可哟在恣意时间再次取回该内容. -
Git目标类型有
四种
:-
数据目标
– blob -
树目标
– tree -
提交目标
– commit -
标签目标
– tag
经过上面的四种目标搭建起了Git
数据结构
-
blob
目标
-
blob目标
意义blob目标
又名数据目标数据目标
的发生是在使用git add
指令,将文件
或者目录
参加暂存区-staging时发生的.目标实质就是
二进制的数据文件
.只包括文件的内容,并不存储文件名
和文件权限
.文件名
将在tree
目标中存储 -
blob目标
存储方法从
Git
目标中,咱们知道Git
的核心部分是键值对数据库
.blob
目标也不破例.这里我就直接引证网上的图了,如下所示 -
blob目标
存储方法及方位-
存储方位
在学习.git文件的时分.咱们知道
.git文件结构
如下所示**.** ├── COMMIT_EDITMSG ├── HEAD ├── config ├── description ├── **hooks** ├── index ├── **info** ├── **logs** ├── **objects** └── **refs**
当履行过
git add
指令后,这时分咱们去.git/objects/
目录下,就会看到一个文件76/2c98e3
.如下所示由此咱们能够知道
blob
目标是存储在.git/objects/
目录下. -
目标存储方法
Git目标的的键使用
40
位的16
进制数表示的.即SHA-1
散列值.如762c983e33c2968ef90e5504c584a47f54a5c9c8
从
.git/objects
文件中,咱们不难发现.文件是由散列值前两位字符76
用于命名子目录.剩余38
字符串为文件名.
-
-
检查
blob
目标内容- 用
cat
指令来检查对应内容.cat .git/object/76/2c983e33c2968ef90e5504c584a47f54a5c9c8 xK??OR04`x?1????=GS **%**
从上面的实战中,发现是乱码.为啥是乱码的.主要是咱们的文件内容显现经过
zlib
紧缩,然后将zlib
紧缩后的内容写入磁盘文件.所以咱们不能简略的经过cat
指令获取内容.需要用git
提供的指令获取内容 -
git cat-file
- 检查
blob
目标的内容git cat-file -p 762c983e 初始化
- 检查目标类型
git cat-file -t 762c983e blob
- 检查
- 用
-
Git底层指令创立blob目标
git hash-object
能够将恣意数据保存到./git/object
目录下,虽然咱们能够经过git add
也能完成.但多学一种方法,总是有用的.相对来说git add
是归于高档指令,而真正干事的仍是git hash-object
这种更底层的指令.echo "hellow" | git hash-object -w --stdin 4f6caba6e267fd5ddbc3e49af8843a1af1ab0793
参数阐明:
参数 阐明 -w
回来键(SHA-1),并将该内容得到blob目标写入到 .git/objects
文件中.--stdin
规范输入读取内容 -
从blob目标取回数据
在上面
git cat-file
使用案例中,咱们能够获取blob
目标内容.现在咱们利用它再取回被删除的内容.如下所示
系列文章
- Git 通用指令-.git文件学习(一)
学习材料
- Git目标
- 深入理解Git