git学习第一篇(底层篇)

本文详细介绍了git中的blob、tree和commit三种对象的作用,从初始化仓库、文件版本控制、暂存区与树对象创建,到commit对象生成的全过程。重点讲解了git init、添加文件、git update-index和git commit的底层原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,git里面包含三个主要的对象:

①git对象--> blob类型

②树对象--> tree类型

③提交对象-->commit类型

一:git init

当我们使用初始化命令时,会在本地创建一个.git隐藏文件,就是git的版本库所在的位置

其目录结构为:

hooks:包含客户端或服务端的钩子脚本

info: 包含一个全局性排除文件

logs:用来保存日志信息

objects: 用来存储所有数据内容

refs: 用来存储数据(分支)的提交对象的指针

config:包含项目特有的配置信息

description:用来展示对仓库的描述信息

HEAD:只是目前被检测出的分支

index:(初始化是不存在的,当使用命令将代码添加到暂存区的时候会自动生成)

二:对一个文件进行简单的版本控制(使用底层命令)

注意:此时的操作只是对本地数据库进行操作(加到了objects目录下),还不涉及到暂存区

在git中文件名并没有被保存,只是保存了文件的内容

三:构建树对象(并塞入到暂存区)

命令:git update-index --add --cacheinfo 100644 加密键值 文件名

git write-tree

文件模式:100644 --> 这是一个普通文件

                  100755 --> 这是一个可执行文件

                  120000 --> 这是一个符号链接

--add选项:因为此前该文件并不在暂存区中

--cacheinfo选项:因为将要添加的文件位于git数据库中,而不是位于当前目录下

查看暂存区中内容命令:git ls-files -s

接上面命令继续执行:

 

注意:给暂存区添加记录只是在暂存区添加了一个记录,并没有将记录添加到数据库(objetcs中),当生成树对象时,会将树对象添加到数据库中,和git对象类似,可以这样理解:git对象是记录的文件的每个版本,树对象(就是项目的快照)记录的是项目的每个版本,使用git write-tree命令将暂存区内容写入数据库(objects)时,并不会将暂存区清空!

四。创建commit对象

 注意:创建commit对象后也会将对象加入到本地数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值