![8949af3453437fd4fecee60f734bb007.png](https://img-blog.csdnimg.cn/img_convert/8949af3453437fd4fecee60f734bb007.png)
回顾上篇文章的内容:
git log命令查看最近提交(最近到最远)的日志。
回到以前的版本,通过git log日志查看到的commit_id。使用git reset --hard HEAD^命令
假如回到以前的版本后,git log查看记录日志会发现未来的版本都没有了,最新的就是回到的现在的版本。假如小黑屏还没有关闭,找到commit_id就可以继续使用git reset --hard commit_id 回到未来的版本。如果小黑屏关闭了,则使用 git reflog命令用来记录你的每一次命令。
![51b6436d18acf1d8924b8538ed54fb9a.png](https://img-blog.csdnimg.cn/img_convert/51b6436d18acf1d8924b8538ed54fb9a.png)
本次新内容:
git和其他版本控制系统如SVN的一个不同之处就是它有暂存区的概念。
git中的工作区(Working Directory):learngit文件夹就是一个工作区
![a40b17cd902461b9c39eaf06478a4e2a.png](https://img-blog.csdnimg.cn/img_convert/a40b17cd902461b9c39eaf06478a4e2a.png)
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者就index)的暂存区。
![4f1e4da0049608579e6fee9c87ad93b2.png](https://img-blog.csdnimg.cn/img_convert/4f1e4da0049608579e6fee9c87ad93b2.png)
还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
![1538fb7a55de66c88c232d148a84dae8.png](https://img-blog.csdnimg.cn/img_convert/1538fb7a55de66c88c232d148a84dae8.png)
我们之前学习了,把文件往git版本库里添加的时候是分两步执行的:
1,git add把文件添加到暂存区。
2,git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
现在我们测试一下。
先对readme.txt做个测试,比如添加一行内容
![bfb84e0bef20afdf40f6df96b9de8776.png](https://img-blog.csdnimg.cn/img_convert/bfb84e0bef20afdf40f6df96b9de8776.png)
然后再learngit文件夹(也就是所谓的工作区中)里创建一个license.txt文件。
![ed5dd14136be75506c3e933e5d108db6.png](https://img-blog.csdnimg.cn/img_convert/ed5dd14136be75506c3e933e5d108db6.png)
并随便添加点内容。
然后用git status 命令查看下当前版本库的状态。
![c2a93a1a6460c7e9607a6604bce7e96e.png](https://img-blog.csdnimg.cn/img_convert/c2a93a1a6460c7e9607a6604bce7e96e.png)
Git非常清楚地告诉我们,readme.txt
被修改了,而LICENSE
还从来没有被添加过,所以它的状态是Untracked
。
![10639970473becb31ad6153939c61ccf.png](https://img-blog.csdnimg.cn/img_convert/10639970473becb31ad6153939c61ccf.png)
然后我们使用git add把两个文件 readme.txt 和 license.txt文件都添加到暂存区。然后git status再次查看。
![df747d922b232499bbe46255f3abb8c7.png](https://img-blog.csdnimg.cn/img_convert/df747d922b232499bbe46255f3abb8c7.png)
![db145508b2b19069942701c3bdbfe084.png](https://img-blog.csdnimg.cn/img_convert/db145508b2b19069942701c3bdbfe084.png)
很明显看出一个是新文件 new file 一个是修改过的文件 modified。
此时暂存区的状态是这样的:
![1862ba3817d6f0c9b5a87271f88dc2cf.png](https://img-blog.csdnimg.cn/img_convert/1862ba3817d6f0c9b5a87271f88dc2cf.png)
所以,git add命令是把要提交的所有修改放到暂存区(stage),然后,执行 git commit
就可以一次性把暂存区的所有修改提交到分支也就是master上。
![f22ff42928b829ca3a37783f84674af0.png](https://img-blog.csdnimg.cn/img_convert/f22ff42928b829ca3a37783f84674af0.png)
一旦提交后,如果此时你没对工作区做任何修改,那么工作区就是‘干净’的。
![33f4e2b02bfaec1f6ce08cfe5ba6831a.png](https://img-blog.csdnimg.cn/img_convert/33f4e2b02bfaec1f6ce08cfe5ba6831a.png)
现在,版本库就变成了这样,暂存区没有任何内容了
![bf7f93d062253f3b0390b72650fcfa1e.png](https://img-blog.csdnimg.cn/img_convert/bf7f93d062253f3b0390b72650fcfa1e.png)
总结:
理解工作区。learngit文件夹就是工作区。
理解暂存区这个概念。git add命令是把你所作的修改提交到暂存区(stage),然后git commit把修改提交到分支。
复习git status是查看版本库当前的状态。