一起学Git:Git文件状态

书接上回,上回讲到要想学习Git,需要先忘记SVN。
Git的文件存储是不同于一般的版本控制工具,Git每次存储的是全部文件的快照,而不是只存储修改文件的diff。
但是在我们修改,提交文件的时候,Git文件是经过怎样的变化才存储到版本库中呢?
众所周知:人的一生经过出生成长,衰老,最后到死亡,这是每个人都避免不了的。但是文件快照中记录的文件在Git仓库中是怎样走过他们一生的呢?他们也会按照我们的规律发展吗?

今天就来介绍Git的文件状态变化。
Git有三种文件状态: 已提交(unmodified),已修改(modified),已暂存(staged) 当然,未跟踪(untracked)的文件应该还不属于Git文件。 
                                Git文件状态转换关系

上面记录了Git的三种文件状态之间的转换: 已提交的文件在本地 工作区修改之后状态变成 已修改,把 已修改的文件加入到 暂存区后,状态变为 已暂存,把 已暂存的文件提交到 Git仓库后,状态又重新变为 已提交
 由此引入了Git三个区域的概念: 工作区(Working Directory),暂存区(Staging Area),Git仓库(.git directory)。
                                    Git结构

我们从Gitlab上clone了一份代码之后,我们自己的Git仓库就诞生了。
我们在进入到clone的文件夹后看到的除了.git之外的,即为 工作区(Working Directory),此时所有的文件均为 已提交(unmodified)状态
这时我们发现有个文件怎么编译都不过,我们需要对其进行修改,修改之后,当前的文件修改仅仅只在 工作区(Working Directory)做了修改,并没有把该文件添加到暂存区。这时文件状态变为 已修改(modified)
我们执行 git add操作后,即把该文件添加到了 暂存区(Staging Area)。文件的状态就变化为了 已暂存(staged),这时我们就可以进行commit操作了,当然也可以等到其他文件也暂存之后,一起提交。
(什么是暂存区,怎么添加到暂存区的?我们下节重点介绍。现在先想象成一个区域吧!)
在执行 git commit命令后,文件就添加到 Git仓库(.git directory)了,文件的状态又变回了 已提交(unmodified)
这样这个文件就完成了一次在Git中 出生(clone)--- 叛逆(被修改)--- 成长(被暂存)--- 死亡(合入到Git仓库)的过程。

那么有人就要问了:
只是执行了一条add语句,就把文件加入到了暂存区,到底是怎么加入的?
为什么要有暂存区的概念,直接修改提交不是更简单吗?
Git暂存区真的不需要吗?Git暂存区的优势在哪里?Git暂存区将何去何从?

请听下回: Git背后的故事-暂存区+对象文件
想知道关于Git更多内容,请继续关注: 一起学Git
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值