Git 时空穿梭

Git 时空穿梭

这次玩一玩Git的核心技能—时空穿梭

在Quick Start中我们了解到,Git是一个版本控制系统,那么咱们就来控制一下版本。

首先,看一下readme.md的版本有哪些。用git log命令查看

git log readme.md 

输出:

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9 (HEAD -> master)
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:22:21 2020 +0800

    change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:12:43 2020 +0800

    I create a new file named readme.md

可以看到有两个版本,有点少,再来一个版本,添加一行文字,具体操作略去。

看下现在的版本信息,依然是用git log

commit b59f8356a40dd7193943285b9b3823722b3ceccc (HEAD -> master)
Author: jiayuanxie <1131726190@qq.com>
Date:   Sat Mar 14 13:17:34 2020 +0800

    append a line

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:22:21 2020 +0800

    change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:12:43 2020 +0800

    I create a new file named readme.md

现在有了三个版本,按照时间排序,最近的在前面。


从现在开始回退,使用命令git reset --hard HEAD^^,再用git log查看版本:

F:\GItWork>git reset --hard HEAD^^
HEAD is now at 9624d8b change a file named readme.md

F:\GItWork>git log
commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9 (HEAD -> master)
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:22:21 2020 +0800

    change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:12:43 2020 +0800

    I create a new file named readme.md

可以看到,版本回退到了第二个版本“change a file name readme.md”,打开文件确实如此。

哇,真的神奇!

那么问题来了,我怎么重返未来到第三个版本呢?

Git 还是有后悔药可以吃的,翻看命令的历史记录,找到版本3的commit Id值,也就是commit后面那一串数字,利用这个就可以找回来。

F:\GItWork>git reset --hard b59f
HEAD is now at b59f835 append a line

再看一下日志:

F:\GItWork>git log
commit b59f8356a40dd7193943285b9b3823722b3ceccc (HEAD -> master)
Author: jiayuanxie <1131726190@qq.com>
Date:   Sat Mar 14 13:17:34 2020 +0800

    append a line

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:22:21 2020 +0800

    change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428
Author: jiayuanxie <1131726190@qq.com>
Date:   Fri Mar 13 16:12:43 2020 +0800

    I create a new file named readme.md

我又重返未来到版本3啦!

等下,如果我关机了,记录不就没有了嘛,我怎么看版本3的commit id呢?

git 也考虑到了,使用git reflog 命令就可以查看命令历史。

那如果不小心改错了文件,或者撤销本次修改怎么办?

你可以发现,Git会告诉你,git checkout -- file可以丢弃工作区的修改:

git checkout -- readme.md

命令git checkout -- readme.md意思就是,把readme.md`文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.md自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.md已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

小结

现在总结一下:

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

感谢

感谢廖雪峰老师详细的基础教程!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值