GIT学习笔记
工作区和暂存区
-
先解释概念:
- 工作区:就是在电脑里能看到的目录,比如
learngit
文件夹就是一个工作区。 - 版本库:工作区里有一个隐藏目录
.git
,这个不算工作区,而是git的版本库。
- 工作区:就是在电脑里能看到的目录,比如
-
git的版本库里面存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git自动创建的第一个分支
master
,以及指向master
的一个指针HEAD
。 -
分支和HEAD的概念后面再讲。
-
前面学到在把文件添加到git的版本库的时候,是分两步执行的。
- 第一步是用
git add
把文件添加进去,其实是添加到了暂存区; - 第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为在我们创建Git版本库的时候,Git自动为我们创建了唯一一个master
分之,所以现在git commit
就是往master
分支上提交更改。
- 第一步是用
-
实际上,可以简单理解为想把需要提交的文件修改都放在暂存区,然后一次性提交暂存区的所有修改。
-
我们对
readme.txt
再做修改,比如加上一行内容。并新建一个LICENSE
文本文件。 -
使用
git status
查看状态。
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: readme.txt
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
LICENSE
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
- Git很清楚的告诉我们,
readme.txt
已经被修改了,而LICENSE
还从没被添加过,所以他的状态是未跟踪
,也就是Untracked
。 - 现在使用两次
git add
,把这两个文件都添加进去,再用git status
查看一下:
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
新文件: LICENSE
修改: readme.txt
-
这是现在暂存区的状态。
-
所以,
git add
命令实际上就是把要提交的所有修改放入暂存区,然后执行git commit
就可以一次你把暂存区的所有修改提交到分支。
$ git commit -m "understand how stage works"
[master 8014621] understand how stage works
2 files changed, 2 insertions(+)
create mode 100644 LICENSE
- 一旦提交后,如果对工作区没有做任何修改,那么工作区就是“干净”的。
$ git status
位于分支 master
无文件要提交,干净的工作区
- 这是现在版本库的内容