Git学习笔记 chapter02--版本回退

来源:互联网 发布:java判断txt文件结尾 编辑:程序博客网 时间:2024/06/06 18:06

点击进入:廖雪峰老师的Git教程

上次搞到了版本的修改,在此之上我们再修改一下,给它增加一段文本”This is my third use.”,并提交,现在内容是这样:

$ cat README.MDThis is my first use.This is my second use.This is my third use.

每一次commit就像当于是我们打游戏进行了存盘,一旦以后进行什么错误的操作,都可以从这次存盘里恢复。
要想恢复以前的版本,得先用git log命令查看一下总共有哪些版本

$ git logcommit 69f91cb31938245441c4f3e044c8d65c8e656cda (HEAD -> master)Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 20:49:50 2017 +0800    modify 3commit cb8afa8eb639bd9627686aa7d85a33eaa83d348fAuthor: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 20:43:11 2017 +0800    modify filecommit be8afaa3502e2e7bf53c240f28189146d0b0b2c6Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 18:19:13 2017 +0800    new file README.MD

这里我们看到有3个版本,git log –pretty=oneline加上后面这个参数就会看到简要的信息,只显示commit id(版本号),这个版本号是一个SHA1计算出来的一个非常大的数字,用十六进制表示。

$ git log --pretty=oneline69f91cb31938245441c4f3e044c8d65c8e656cda (HEAD -> master) modify 3cb8afa8eb639bd9627686aa7d85a33eaa83d348f modify filebe8afaa3502e2e7bf53c240f28189146d0b0b2c6 new file README.MD

这里HEAD是指当前最新的版本,那么上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然数量大了,例如要回退n个版本,那就是HEAD~n,例如HEAD~10回退10个版本。
这里回退到版本2。

$ git reset --hard HEAD^HEAD is now at cb8afa8 modify file$ git logcommit cb8afa8eb639bd9627686aa7d85a33eaa83d348f (HEAD -> master)Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 20:43:11 2017 +0800    modify filecommit be8afaa3502e2e7bf53c240f28189146d0b0b2c6Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 18:19:13 2017 +0800    new file README.MD$ cat README.MDThis is my first use.This is my second use.

这时发现我们的版本已经被修改到了第二个版本,但是如果我们想要再回去呢?
同样的命令,后缀加上我们要回退的commit id,就能回去了。
这里commit id输入前面前缀,保证不会与其他版本重复就可以了。

$ git reset --hard 69f91cbHEAD is now at 69f91cb modify 3$ git logcommit 69f91cb31938245441c4f3e044c8d65c8e656cda (HEAD -> master)Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 20:49:50 2017 +0800    modify 3commit cb8afa8eb639bd9627686aa7d85a33eaa83d348fAuthor: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 20:43:11 2017 +0800    modify filecommit be8afaa3502e2e7bf53c240f28189146d0b0b2c6Author: xiaoyangLee <lixiaoyang2020@gmail.com>Date:   Thu Jul 20 18:19:13 2017 +0800    new file README.MD$ cat README.MDThis is my first use.This is my second use.This is my third use.

版本回退就成功了。
但是如果把窗口关掉了,还是想回退到那个版本呢?
git reflog可以记录我们的每一次命令,这样就能找到commit id。

$ git reflog69f91cb (HEAD -> master) HEAD@{0}: reset: moving to 69f91cbcb8afa8 HEAD@{1}: reset: moving to HEAD^69f91cb (HEAD -> master) HEAD@{2}: commit: modify 3cb8afa8 HEAD@{3}: commit: modify filebe8afaa HEAD@{4}: commit (initial): new file README.MD
原创粉丝点击