git版本回退

版本回退说白了就是返回某一次操作前的状态。
首先在新建的readme.txt里输入内容并已经提交的基础上执行以下操作:
先修改readme.txt文档:
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(-)
git log 命令查看历史记录
$ git log                                         //查看历史记录
commit a34058bf6a73828c46b9383ed29656e5dd4ef823
Author: Amy <qianghongrong@yeah.net>
Date: Thu May 25 10:09:32 2017 +0800

  append GPL

commit f973ae85b3ea7d928ba6b14f1b06b37ea1ffcec4
Author: Amy <qianghongrong@yeah.net>
Date: Thu May 25 09:51:40 2017 +0800

  add distribed

commit 26a10837cfd1447a34e31a4d1b9c5f6a76337305
Author: Amy <qianghongrong@yeah.net>
Date: Thu May 25 08:57:20 2017 +0800

  wrote a readme file
觉得太乱,可以加上 --pretty=oneline 参数:

$ git log --pretty=oneline
a34058bf6a73828c46b9383ed29656e5dd4ef823 append GPL
f973ae85b3ea7d928ba6b14f1b06b37ea1ffcec4 add distribed
26a10837cfd1447a34e31a4d1b9c5f6a76337305 wrote a readme file
前面的 一大串类似 3628164...882e1e0 的是 commit id (版本号)

现在退回到之前的版本

1. Git必须知道当前版本是哪个版本,在Git中,用 HEAD 表示当前版本,也就是最新的提交 3628164...882e1e0 (注意我的提交ID和你的肯定不一样),上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,当然往上100个版本写100个 ^ 比较容易数不过来,所以写成 HEAD~100
们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用 git reset 命令:
$ git reset --hard HEAD^
HEAD  is now  at ea34578  add distributed
使用  cat readme.txt 来读取文件内容
$ cat readme.txt      //读取文件内容
Git is a distributed version control system.
Git is free software.
git log 再看看现在版本库的状态

$ git log --pretty=oneline
f973ae85b3ea7d928ba6b14f1b06b37ea1ffcec4 add distribed
26a10837cfd1447a34e31a4d1b9c5f6a76337305 wrote a readme file

最新的那个版本 append GPL 已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个 append GPL commit id 3628164... ,于是就可以指定回到未来的某个版本:
$ git re set --hard  3628164          //版本号没必要写全,前几位就可以了,Git会自动去找
HEAD is now at 3628164 append GPL

再小心翼翼地看看readme.txt的内容:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的 commit id 怎么办?
在Git中,总是有后悔药可以吃的。当你用 $ git reset --hard HEAD^回退到 add distributed版本时,再想恢复到 append GPL,就必须找到 append GPL的commit id。Git提供了一个命令 git reflog用来记录你的每一次命令:
git reflogea34578 HEAD@{0}: resetmoving to HEAD^
3628164 HEAD@{1}: commitappend GPLea34578 HEAD@{2}: commitadd distributedcb926e7 HEAD@{3}: commit (initial): wrote a readme file
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陌默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值