工作区:我们在电脑里面能看到的目录,也就是我们用git init 命令初始化的那个目录。里面包含要添加文件和需要提交的文件,在这个目录下的文件,修改和变更,我们的git都能感知的到。
版本库:工作区有一个隐藏的目录“.git”,这个不算是工作区,而是Git的版本库,Git的版本库里存了很多的东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们
自动创建的第一个分支master,以及指向master的一个指针叫HEAD.
git add命令实际上是要把提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性的把暂存区的所有的修改提交到分支。
一旦提交后,如果你没有对工作区做任何修改,那么工作区就是“干净的”。用git status命令查看一下:
$ git status
On branch master
nothing to commit, working directory clean
一旦提交以后,暂存区就没有任何内容了。
小结:暂存区是Git非常重要的概念,只要搞清楚暂存区,就弄明白了Git的很多操作到底干了什么。
第一次修改->git add->第二次修改->git commit
以上的过程会发生什么?
这样做的话,第二次的修改是不会被提交的,如果每次的修改不add到暂存区,那就不会加入commit中。
LV@LV-PC MINGW32 /c/gitrepository (master)
$ git add readme.txt
LV@LV-PC MINGW32 /c/gitrepository (master)
$ cat readme.txt q
This is a git repository
Git is a GPL software
git is a distribute control system
第一次修改cat: q: No such file or directory
LV@LV-PC MINGW32 /c/gitrepository (master)
$ git add readme.txt
LV@LV-PC MINGW32 /c/gitrepository (master)
$ cat readme.txt
This is a git repository
Git is a GPL software
git is a distribute control system
第一次修改
第二次修改
LV@LV-PC MINGW32 /c/gitrepository (master)
$ git commit -m "this is fourth commit"
[master df9bdf7] this is fourth commit
1 file changed, 3 insertions(+), 1 deletion(-)
LV@LV-PC MINGW32 /c/gitrepository (master)
$ git status
On branch master
nothing to commit, working directory clean