git 工作原理图
如上图所示,有三个区域Working Directory、stage、master。
名词解释:
工作区(Working Directory)
在我们直接编辑文件(文件夹)的根目录,如下图:
在G盘Git目录下就是工作区
版本库(Repository)
版本库才是git正式工作的地方,在工作区下隐藏目录里,如下图:
版本库主要包括两个区,如上图,包括“stage”和“master”。
master
master区管理了我们每次提交后的文件版本以及相关信息,是git最重要的仓库。在master区,有一个head指针(见图1),指向最新提交的版本。stage
stage是工作区到master区的缓存区,在做小的修改时我们可以先提交到stage,确定没有问题了,或者当天的工作完成了,再把缓存区的内容最终提交到master。
工作原理
上篇博客里讲了命令行:git add、git commit
其中执行git add的时候,是把在“Working Directory”去修改(增加或删除)的内容提交到“stage”
执行git commit之类的时候,把“stage”的内容最终提交到“master”区。
git status
命令行git status 能够帮助我们快速的了解git的当前状态。
例如,我们现在工作区新增一个test3.txt文件(先不要添加到版本库),然后执行git status。
chenxi@chenxi_pc MINGW64 /G/Git (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
test3.txt
nothing added to commit but untracked files present (use "git add" to track)
从上面的代码我们可以看出,有在工作区新文件(test3.txt)待提交,但从stage区到master区没有新内容提交。
所以根据上篇博客的知识,先用git add把test3.txt提交到stage。执行指令git add后,再使用git status查当前git状态,如一下代码:
chenxi@chenxi_pc MINGW64 /G/Git (master)
$ git add test3.txt
chenxi@chenxi_pc MINGW64 /G/Git (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test3.txt
chenxi@chenxi_pc MINGW64 /G/Git (master)
从上面的的结果知道已经成功添加到status,准备好等待我们提交到master,执行git commit可以完成提交任务,如下图:
chenxi@chenxi_pc MINGW64 /G/Git (master)
$ git commit -m "add test3.txt file"<