工作区(Working Directory)
gitspace 文件夹(目录)就是一个工作区
版本库(Repository)
工作区有一个隐藏目录 .git,这个是 Git 的版本库。
Git 的版本库里存了好多东西,其中最重要就是 stage(或者index)的暂存区,Git 自动创建的第一个分支 master,以及指向 master 的指针叫 HEAD。
分析一下把文件往 Git 版本库里添加的原理:
- 执行 git add 把文件添加进去,实际上是把文件添加到缓存区;
- 执行 git commit 提交更改,实际上是把缓存区的所有内容提交到当前分支。
验证:
-
先对 readme.txt 修改,并在工作区新增一个 LICENSE 文本文件;
Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage.
-
执行 git status 查看一下状态,readme.txt 被修改了,而 LICENSE 还从来没有被添加过,所以它的状态是 Untracked。
$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: readme.txt Untracked files: (use "git add <file>..." to include in what will be committed) LICENSE no changes added to commit (use "git add" and/or "git commit -a")
-
执行两次命令 git add,把 readme.txt 和 LICENSE 都添加后,用 git status 再查看一下;实际上是把文件添加到缓存区;
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: LICENSE modified: readme.txt
-
执行 git commit 就可以一次性把暂存区的所有修改提交到分支;
$ git commit -m "understand how stage works" [master e43a48b] understand how stage works 2 files changed, 2 insertions(+) create mode 100644 LICENSE
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是 “干净” 的:
$ git status On branch master nothing to commit, working tree clean