GIT | 关于GIT中3种对象的理解

这篇博客详细介绍了Git中的3种核心对象:blob对象、tree对象和committer对象。blob对象用于存储文本内容,tree对象用于组织文件和目录结构,而committer对象则包含提交信息。通过创建和操作这些对象,展示了Git如何存储和管理文件版本。文章还探讨了对象之间的关系和Git命令背后的运作原理。
摘要由CSDN通过智能技术生成

日常工作中,经常使用git,最多使用的都是一些对人友好的命令,用久了就想了解git是如何存储文件的,如何管理文件的以及命令背后到底发生了什么。

先学习下面的知识,然后通过命令慢慢理解。
git是一套内容寻址文件系统,即任何内容都是以文件的形式存储的;然后通过文件内容生成一个键值,通过键值找到文件。git是以面向对象的形式存储文件,既然是面向对象,那肯定有对象类型,下面就学习下git中的对象类型。

git中对象类型有三种:blob对象,tree对象和committer对象。

1 blob对象

概念:blob对象是用来存储文本内容的。即把一个包含具体文本内容的文件作为一个blob对象存储在git系统中。
下面通过命令的形式创建一个blob对象。

[1] 首先新建一个git仓库
$ mkdir test-git
$ cd test-git
$ git init
Initialized empty Git repository in E:/git_code/test-git/.git/

一个干净的git仓库包含下面的文件:

$ ll
total 7
-rw-r--r-- 1 XXX8 1049089 130 三月   23 10:30 config
-rw-r--r-- 1 XXX8 1049089  73 三月   23 10:30 description
-rw-r--r-- 1 XXX8 1049089  23 三月   23 10:30 HEAD
drwxr-xr-x 1 XXX8 1049089   0 三月   23 10:30 hooks/
drwxr-xr-x 1 XXX8 1049089   0 三月   23 10:30 info/
drwxr-xr-x 1 XXX8 1049089   0 三月   23 10:30 objects/
drwxr-xr-x 1 XXX8 1049089   0 三月   23 10:30 refs/

初始化仓库中的文件夹和文件的含义如下:

  • config文件:包含项目的特定配置项,比如命令别名的配置可以配置在该文件;
  • description文件:仅供GitWeb程序使用;
  • HEAD文件:文件自始至终只有一行内容,表示当前分支;
  • hooks/文件夹:包含客户端或者服务端的钩子文件,主要用来设置自动脚本减少手工操作;为了保证项目的安全,一般不会用到钩子脚本;
  • info/文件夹:默认含有一个可执行的文件,文件为.gitignore忽略的内容;
  • objects/文件夹:用来存储所有的对象信息;
  • refs/文件夹:存储指向分支的提交对象的指针,包括项目中所有的分支指针;
[2] 通过命令创建一个文本文件,并生成一个blob对象:
$ echo 'test conten' | git hash-object -w --stdin
04b35ded9a6e06accbb72875d2b1f05ccbb26afb

命令中参数含义如下:

  • text conten’为文本内容;
  • git hash-object:git底层命令,可以根据传入的文本内容返回表示这些内容的键值。
  • –w:使hash-object命令存储数据,否则仅返回键值而不存储内容;
  • –stdin:指定从标准输入设备如键盘来读取内容,若不用这个参数则需要指定一个要存储的文件的路径;
  • 04b35ded9a6e06accbb72875d2b1f05ccbb26afb是命令返回的40位的十六进制的键值,称为SHA-1码
[3] 通过键值查看对象内容:
$ git cat-file -p 04b35ded9a6e06accbb72875d2b1f05ccbb26afb
test conten

命令中参数含义如下:

  • git cat-file:git底层命令,用来查看二进制文件的内容;
  • -p:让命令输出键值指向的文本内容;
[4] 查看该键值的对象类型:
$ git cat-file -t 04b35ded9a6e06accbb72875d2b1f05
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值