在学习git的过程中,几乎不可避免的会接触到暂存区工作区的概念,而这个概念在git的整个使用过程中是非常重要的。
三个区域
在git中有三个重要的区域:
- 工作区(Working Area): 存放目前正在编辑的文件,以及git未跟踪的文件
- 暂存区(Staging Area): 存放已经Add的即将提交的文件,git通过这个区域可以判断出即将要做的提交和当前的提交有哪些改变
- 本地仓库(Repo): 本地历史版本
基本Git流程
- 当我们新建了一个git 未跟踪的文件时,使用
git status
查看状态时,可以开到当前的文件状态是Untracked files
:
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
text.txt
nothing added to commit but untracked files present (use "git add" to track)
- 当我们编辑完一个或者多个文件后,使用
git add
时,文件就已经到达了暂存区了,此处的状态是:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: text.txt
3.当我们使用git commit
命令时,文件就已经存到仓库里面了,此时的状态是:
On branch master
nothing to commit, working tree clean
更多的git的流程如下图所示:
注意
需要注意的是,当我们提交了一个版本后,很多文章说的是此时的暂存区就是空的,如同下图:
但是实际情况不是这样的,我们可以使用git ls-files -s
查看当前的暂存区有哪些文件,实际情况是:
$ git commit -m "first commit"
[master (root-commit) 37295f8] first commit
2 files changed, 1 insertion(+)
create mode 100644 1.txt
create mode 100644 2.txt
$ git ls-files -s
100644 6b5464175c9aef33e563df00302ea570184939f5 0 1.txt
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 2.txt
可以看出,在我们commit之后,暂存区实际上并不是清空的,当前的暂存区可以看做是对上一次提交的一个拷贝!
如果对本文有什么意见和建议,欢迎讨论和指正!!!