Git 分布式版本控制系统(三)

时间:2022-02-03 06:21:37

一、版本回退

一次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所示。

Git 分布式版本控制系统(三)

图3.1


commit之后,暂存区清空。