要想彻底了解一个东西,首先需要了解它的整体框架结构。Git也是如此。这一小节,我们来看看构成它的骨架。
- 工作区(Working Directory)
指平常说的工作目录,例如我之前创建的xxlgit
就是一个工作区。- 版本库(Repository)
工作区中有一个隐藏目录.git
,之前小节中稍微提到过,它就是Git的版本库。- 版本库中可以存放各种各样的东西,其中最重要的概念有缓存区(index或者stage)、分支
master
、指向master
的指针HEAD
。
下面,我们将之前说过的添加文件到Git版本库的两个步骤重新复习一遍,并配以图片形式加以理解。
我们将love.txt
中的内容修改如下:
I love you so much as the mouse like rice.
Do you know?
Every day
Hey,Julie.
在工作区新建一个文本文件air.txt
(内容随意)。
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: love.txt
Untracked files:
(use “git add <file>…” to include in what will be committed)
air.txt
no changes added to commit (use “git add” and/or “git commit -a”)
从上面可以看出,love.txt
被修改了,air.txt
的状态是untracked
,说明它没有被添加到版本库中。
使用命令git add
将love.txt
和air.txt
都添加后,使用git status
命令查看一下此前的状态。
On branch master
Changes to be committed:
(use “git reset HEAD <file>…” to unstage)
new file: air.txt
modified: love.txt
现在,缓存区的状态变成了下面这样。
实际上,git add
将要提交的修改放到了缓存区(stage),之后用git commit
可以一次性将在缓存区的所有修改都提交到分支master。
git commit -m “new file”
命令行输出:
[master 6c2f0aa] new file
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 air.txt
此时使用git status
,发现工作区是干净的。
On branch master
nothing to commit, working tree clean
现在的版本库如下所示。
总结框图如下所示。
欲听后事如何,且听下回分解~