一、版本回退
一次commit就是一个版本,在文件修改过程中,我们会不断commit文件,因此git会记录每次提交的版本号,因为git采用分布式,所以版本号不可能像SVN似的数字标记,而采用SHA来生成版本号。一旦文件改乱了或者误删了文件,就可以通过版本号来回退。
可以通过$git log 来查看版本提交日志。
$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>Date: Tue Aug 20 15:11:49 2013 +0800
append GPL
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>Date: Tue Aug 20 14:53:12 2013 +0800
add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>Date: Mon Aug 19 17:51:55 2013 +0800
wrote a readme file
首先我们必须知道我们当前是哪个版本,在git中,用HEAD(注意必须用大写)表示当前版本,上一个版本是HEAD^,上上个版本是HEAD^^,100个版本数不过来了,使用HEAD~100。
使用$git reset命令回退版本。
$git reset --hard HEAD^ 回退到上个版本。 ==》输出HEAD is now at ea34578 add distributed
$ git reset --hard 3628164 回退到该版本(这里版本号ID可以写前几位,不一定都写出来,但是不能写太少,不然可能有多个版本)
二、工作区和暂存区
工作区
就是电脑能看到的目录,比如learngit目录。
版本库(Reposity)
.git目录不是工作区, 是版本库,版本库里面存了很多东西,最重要的是暂存区stage或index,Git为我们自动创建master分支(分支的概念下节),以及指向该分支的HEAD指针。如图3.1所示。
图3.1
commit之后,暂存区清空。