在Git中,我们用git log
命令查看我们的历史记录:
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:06:15 2018 +0800
append GPL
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 20:59:18 2018 +0800
wrote a readme file
git log
命令显示从最近到最远的提交日志
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
类似1094adb...
的是commit id
(版本号)
使用git reset
命令可以返回到之前的版本:
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
这里的HEAD^
是返回到上一个版本,顾名思义,HEAD^^
是返回到上上一个版本。
注意:当返回到之前的某一个版本后,再次使用git log
打印日志后,便看不到之前最新的版本了,现在的版本变成了最新版本了,那如果想回到切换版本前的那个版本怎末办?
回到某一个版本的另一种写法:
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL
hard后面的参数变成了commit id
(版本号),也就是是说想返回到哪一个版本只需要知道版本号就可以了,通过git log
或git log --pretty=oneline
指令即可查看。
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
当找不到版本号时可以使用git reflog
来查看你的每一次命令:
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
总结
-
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id
或git reset --hard HEAD^
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。