版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:
this two
然后尝试提交:
$ git add readme.txt
$ git commit -m"这是注释"
像这样,你不断对文件进行修改,然后不断提交修改到版本库里,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
现在,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:
版本1:this one
Gitisa version control system.Gitisfree software.
版本2:this two
Gitisa distributed version control system.Gitisfree software.
版本3:this three
Gitisa distributed version control system.Gitisfree software distributed under the GPL.
当然了,在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:
git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:
$ git log --pretty=oneline
需要友情提示的是,你看到的一大串类似3628164...882e1e0的是commit id(版本号)
现在,我们要把当前版本“this two”回退到上一个版本“this one”,就可以使用git reset命令:
$ git reset--hard HEAD^
--hard参数
看看readme.txt的内容是不是版本thi one
$ cat readme.txt
回退到最新版本:
$ git reset--hard3628164 (3628164是版本号,没必要写全)
$ cat readme.txtGitisa distributed version control system.Gitisfree software distributed under the GPL.
现在总结一下:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。