Git-工作区和暂存区

时间:2021-10-19 15:29:58
Git和其他版本控制系统不同的一个概念就是暂存区
首先先了解一下什么是工作区?
工作区就是我们在电脑里能看到的目录,比如说我的learngit文件夹就是一个工作区
Git-工作区和暂存区
再来看什么是版本库?
前面咱们提到使用git init命令把learngit目录变成了Git可以管理的仓库,在这个文件下有一个隐藏的文件.git,我们看不到所以他不是工作区,可以使用ls -ah查看到,这个目录是Git用来跟踪管理版本库的,这个就是Git的版本库
在Git的版本库里面存放了很多重要的东西,其中一个很重要的就是我们常说的暂存区(stage),还有一个就是Git为我们自动创建的第一个分支master,和一个指向master的指针HEAD
Git-工作区和暂存区
我们知道向Git版本库里面添加文件的时候分为两个步骤:
第一个步骤:使用git add命令把文件添加进去,其实这个操作就是把文件修改添加到暂存区(stage)里面
第二个步骤: 使用git commit -m 提交更改,其实这个操作就是把暂存区里面的所有内容提交到当前分支里面

在我们创建Git版本库的时候,Git为我们自动创建了第一个分支master,所以,现在git commit命令就是向master分支上提交更改
所以可以简单的理解为,需要提交的文件修改统统存放到暂存区,然后使用git commit命令一次性提交暂存区的所有修改

我们继续修改readme.txt 文件 ,增加一行 :
Git-工作区和暂存区
然后我们在工作区添加一个新文件LICENSE,内容不要求
Git-工作区和暂存区
使用git status查看状态:
Git-工作区和暂存区
Git非常清楚地告诉我们,readme.txt被修改了,但是LICENSE还从来没有被添加,所以他的状态是untracked
现在使用两次命令git add把readme.txt和 LICENSE都添加后,再使用git status再查看一下:
Git-工作区和暂存区
所以,现在暂存区的状态已经变成了如下图所示:
Git-工作区和暂存区
所以,git add命令可以理解为将文件修改提交到暂存区(stage),然后使用git commit一次性将暂存区的所有文件修改提交到当前分之,现在开始执行  git  commit命令:git commit -m 'understand how stage works'
Git-工作区和暂存区
成功提交之后,如果对于工作区没有做任何修改的话,那么现在工作区就是干净的,使用git status 查看状态:
Git-工作区和暂存区
在执行完git commit命令之后,再来看看Gitb版本库的状态:

Git-工作区和暂存区