廖雪峰Git教程笔记(五)版本回退

现在,我们先复习一下提交改变的整个流程

修改一下readme

Git is a distributed version control system.
Git is free software distributed under the GPL.

添加到版本库,再提交

git add readme.txt
git commit -m "append GPL"
[master 3628164] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)

就是这样,不断的修改,不断的提交,这里就有一个问题,如果发现修改错了,怎么办呢?如何回退到以前的版本呢?

我们仔细想想,readme 一共有多少个版本被我们提交过了

版本1

Git is a version control system.
Git is free software.

版本2

Git is a distributed version control system.
Git is free software.

版本3

Git is a distributed version control system.
Git is free software distributed under the GPL.

现在,版本控制系统的作用就真正发挥啦。。

使用git log命令查看提交的历史(这里我在自己电脑上运行的结果,和廖雪峰官网稍有不同)

git log readme
commit afb53187b21af9e14e8e6bc45a64c290a3e292e2 (HEAD -> master)
Author: 123456789000000@qq.com <123456789000000@qq.com>
Date:   Fri Jan 12 09:15:41 2018 +0800

    append GPL

commit 2e7d71aaa15a88caf12c004df108ae594870c287
Author: 123456789000000@qq.com <123456789000000@qq.com>
Date:   Thu Jan 11 21:46:58 2018 +0800

    add distributed

commit cb101fe332c962eb8fe0f6abc29218699ea35503
Author: 123456789000000@qq.com <123456789000000@qq.com>
Date:   Thu Jan 11 21:25:09 2018 +0800

    wrote a readme file

或者使用精简版的命令,要不然太多了。。

 git log --pretty=oneline readme
afb53187b21af9e14e8e6bc45a64c290a3e292e2 (HEAD -> master) append GPL
2e7d71aaa15a88caf12c004df108ae594870c287 add distributed
cb101fe332c962eb8fe0f6abc29218699ea35503 wrote a readme file

需要友情提示的是,你看到的一大串类似3628164…882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

好了,现在开始回退

git reset --hard HEAD~1
这里HEAD~1就是回退到前一个版本啦,点开查看文件,果然回退了

查看版本库的状态

git log
Author: 2470231941@qq.com <2470231941@qq.com>
Date:   Thu Jan 11 21:46:58 2018 +0800

    add distributed

commit cb101fe332c962eb8fe0f6abc29218699ea35503
Author: 1234567890@qq.com <2470231941@qq.com>
Date:   Thu Jan 11 21:25:09 2018 +0800

    wrote a readme file

可是,如何回去呢?可以用下面的命令

首先,用下面的命令查看你每个提交的id的前面一段,可以向上翻一下命令行,也可以使用下面的命令
git reflog
2e7d71a (HEAD -> master) HEAD@{0}: reset: moving to HEAD~1
afb5318 HEAD@{1}: commit: append GPL
2e7d71a (HEAD -> master) HEAD@{2}: commit: add distributed
cb101fe HEAD@{3}: commit (initial): wrote a readme file
找到appendGPL前面的那行字符串,然后用下面的命令恢复
git reset --hard afb5318 
HEAD is now at afb5318 append GPL
再次查看,果然变回来了
cat readme
Git is a distributed version control system.
Git is free software distributed under the GPL.
查看log
git log
commit afb53187b21af9e14e8e6bc45a64c290a3e292e2 (HEAD -> master)
Author: 2470231941@qq.com <2470231941@qq.com>
Date:   Fri Jan 12 09:15:41 2018 +0800

    append GPL

commit 2e7d71aaa15a88caf12c004df108ae594870c287
Author: 2470231941@qq.com <2470231941@qq.com>
Date:   Thu Jan 11 21:46:58 2018 +0800

    add distributed

commit cb101fe332c962eb8fe0f6abc29218699ea35503
Author: 2470231941@qq.com <2470231941@qq.com>
Date:   Thu Jan 11 21:25:09 2018 +0800

    wrote a readme file

就恢复啦。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值