GIT系列——“02”GIT三大区域

什么是三大区域

三大区域即即工作区暂存区,和本地仓库

首先说明下HEAD,HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交。 这表示 HEAD 将是下一次提交的父结点。可以将HEAD看作当前分支上的最后一次commit的快照。
在这里插入图片描述
工作区(working director):位置上对应项目目录里面所有文件,操作人的工作都在这里进行,所以叫工作区,也叫工作目录。我们知道,git每一次commit都生成了一个tree对象,记录了整个项目结构,文件内容的索引等。工作目录(工作区)即是根据HEAD对应的commit对象所读取出来的目录和文件。然后操作人会在此基础上对文件进行增,删,改。
在这里插入图片描述
暂存区(index):位置上对应.git里面的index文件。可以通过git ls-files -s查看,里面保存的是下一次commit提交所应该有的样子,意思就是说在工作区修改后,通过git add为修改后的文件生成blob对象放入objects文件夹中,并且将暂存区中所反映的项目结构中相应的修改文件索引替换成新索引。
在这里插入图片描述
本地仓库(repository):位置上即.git文件夹。我们平时也说本地版本库,里面包含暂存区,对象(blob对象,commit对象,tree对象),日志等。其保存了所有提交版本的项目快照和文件快照。
在这里插入图片描述我们从暂存区提交内容到本地仓库,其过程就是在本地仓库建立一个commit对象,其对应的项目树结构是通过暂存区的信息生成的。

三个区域的协作

我们通过例子对文件数据流向做一个梳理,以此来说明下暂存区的作用。
在这里插入图片描述
1、 我们在工作区创建一个info.txt(V1)。

2、git add后,info.txt在objects中生成一个blob对象,在暂存区进行暂存。暂存区放入修改后的项目快照,用于下一次提交。

3、再次修改工作区的info.txt(V2) (如果没有再次git add,则提交的还是V1)。

4、git commit,将暂存区对应的项目结构放入本地仓库,HEAD指向commit。

三个区域的比较

我们可以对三个区域文件进行比较

git diff :工作区 vs 暂存区,按照上面的例子会显示V2修改的内容

git diff head :工作区 vs 版本库,按照上面的例子会显示V2修改的内容

git diff --cached :暂存区 vs 版本库,按照上面的例子会显示空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值