
回顾上次的知识:
1,首先git init 初始化文件的状态,使用git管理文件。
2,git add xxx 告诉git把xxx文件添加到仓库
3,git commit -m ‘xxxx’告诉git把文件提交到仓库 并对提交的内容作解释(‘xxxx’)4,git status 可以时实的查看当前文件的状态,比如是否修改?
5,假如修改了,具体修改的什么内容? git diff xxx 查看具体哪里被修改
然后日常开发,我们就会重复多次的git add 和 git commit这两个git命令。commit就类似于保存一个“快照”。commit的每次记录也都会被git给记录下来,方便日后翻阅。
本次新知识:
从开始到现在我们已经更改了几次readme.txt文件,但是我们像看看到底每次都修改了什么?
git log 命令可以帮助我们查看commit过的历史记录。
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:06:15 2018 +0800add distributed under the GPL 每次修改你-m 后面添加的信息commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:03:36 2018 +0800add distributed 每次修改你-m 后面添加的信息commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 20:59:18 2018 +0800wrote a readme file 每次修改你-m 后面添加的信息
git log
命令显示从最近到最远的提交日志,我们可以看到3次提交。
接下来是最重要的时光穿梭机。我们把readme.txt回退到以前的版本。
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
回退到以前的版本需要使用 git reset --hard 命令
$ git reset --hard HEAD^
HEAD is now at b216c75 append distributed
此时,再次重新打开readme.txt文件就已经还原上次的版本了。
此时我们复习下git log命令,查看下现在的版本日志
$ git log
commit b216c75d2f7bd7cff68c0cd3437790c442931b68 (HEAD -> master)
Author: kuiningChen <13288651469@163.com>
Date: Tue Jun 5 22:14:21 2018 +0800append distributedcommit 22aaac183e488160e2d53082f4420a6393de2f0f
Author: kuiningChen <13288651469@163.com>
Date: Tue Jun 5 21:36:34 2018 +0800wrote a readme file
我们发现竟然只有两次修改了(原本三次修改的),最新的版本(也就是第三次的版本)已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append GPL
的commit id
是1094adb...
,于是就可以指定回到未来的某个版本:
$ git reset --hard 1094a
HEAD is now at add distributed under the GPL
版本号没必要写全,前几位就可以了,Git会自动去找。

小结:
git log 查看版本提交的历史记录情况
用git log
可以查看提交历史,以便确定要回退到哪个版本

HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
commit_id就是上面黄色的部分。
使用git reflog 用来记录你的每一次命令
用git reflog
查看命令历史,以便确定要回到未来的哪个版本

看到(上图)黄色部分的commit_id然后可以使用git reset --hard 命令回到想要过去的(未来)版本。