
版本回退
当我们学会了Git的基本提交操作,现在来试试Git的版本回退。
首先在一个空的仓库里,新建一个test.txt文件来作为测试文件,我们在里面添加如下内容:
|
|
然后将其进行提交
|
|
提交成功这就是我们的第一个版本 现在我们在来对它进行修改
|
|
并同样进行提交
|
|
现在我们的仓库里应该是存在两个版本的,但是我们应该不可能直接记住每一次提交的内容,所以我们可以使用git log
来查看每次提交的日志
|
|
在这里我们可以清楚的看到每一次提交的机基本信息,包括提交版本号、作者、日期以及commit信息。(如果commit内容很多,按j和k来上下移动,退出的话按q即可)
当我们做好准备的时候我们就可以开始版本回退了。版本回退最重要的两个信息是版本号和当前HEAD,从上面的日志我们可以看到每次提交的版本号,以及HEAD
(当前版本)。HEAD
是当前的版本,Git中规定HEAD^
为当前版本的上一个版本,HEAD^^
为上上个版本,以此类推。
我们现在正处于最后一次提交的版本上,让我们来回退到前一次提交的版本
|
|
git reset
后的参数--hard
代表的是回退到上个版本的已提交状态,除此之外还--soft
上个版本的未提交状态,--mixed
会回退到上个版本已经add
但是没有提交的状态。
当执行完毕后,我们在打开test.txt就会发现里面的内容变成了我们第一次提交时候的状态。
现在让我们再来看一下git log
的内容:
|
|
我们可以看到,第二次提交的信息直接没了,只剩下第一次提交的信息。
但是,如果说我回退错了版本或者说我现在后悔了,我想回退到新的版本,该怎么做呢?很简单,把前面的HEAD^
换成我们第二次提交的版本号即可,因为我们之前输入过git log
,我们可以得知第二次提交的版本号为c5c4206...
(版本号可以简写,但不能太短,而且每个人的版本号都不一样),现在让我们回退到第二次提交:
|
|
现在我们再来打开test.txt文件,我们就能发现它回到了我们第二次提交的状态。
哎!且慢,有小伙伴要说了,万一我之前没有git log
过,我不知道我的版本号是多少该怎么办?很简单,我们通过git reflog
来查看我们之前所做的每一次Git操作即可:
|
|
我们可以看它输出了我们每次Git命令的操作内容,其中最前面的那串复杂字符串就是我们那次操作后的版本号,比如我在回退到HEAD^
之后,我的版本号变成了4070f9e
,而这条操作的前一个操作就是我第二次提交的版本号c5c4206
,我们可以根据这个来进行版本的回退。
小结
HEAD
表示当前版本号,HEAD^
表示上一个版本号,使用git reset --hard HEAD^
可以回退到上一个版本的已提交状态。git log
可以查看当前版本下的历史提交记录以及历史版本号,方便我们回退历史版本。git reflog
可以查看当前Git仓库下的历史Git操作,可以找到,每条操作后的版本号,方便回到未来版本。