在版本控制系统中,我们可能提交过好多次的版本。要想回退到之前的版本,必须得知道我们提交过的版本记录,该如何获取提交的版本记录呢?
用命令:git log
用法如下:
zhanggeng:git_learning (master)$git log
commit 1b954b4b03f44d797a4ba8301507614f1a5cabee
Author: zhanggeng <zhanggengdyx@sina.com>
Date: Thu Jan 29 22:24:19 2015 +0800
thrid commit : girl friend
commit 421f96170db4af6140a66fecc86cac3550f5a864
Author: zhanggeng <zhanggengdyx@sina.com>
Date: Thu Jan 29 22:23:13 2015 +0800
second : why so
commit c520daccf0d363786b54e33b72ee6708cf346f4a
Author: zhanggeng <zhanggengdyx@sina.com>
Date: Thu Jan 29 22:20:04 2015 +0800
first commit : for cat txt
commit ab88d5c302c452ca89004d5b67ad359bdcf51650
Author: zhanggeng <zhanggengdyx@sina.com>
Date: Thu Jan 29 22:00:02 2015 +0800
thrid commit : do what
:
输出信息太多,加上 --pretty=oneline参数,可以简化输出:
命令使用如下:
zhanggeng:git_learning (master)$git log --pretty=oneline
1b954b4b03f44d797a4ba8301507614f1a5cabee thrid commit : girl friend
421f96170db4af6140a66fecc86cac3550f5a864 second : why so
c520daccf0d363786b54e33b72ee6708cf346f4a first commit : for cat txt
ab88d5c302c452ca89004d5b67ad359bdcf51650 thrid commit : do what
4811639f3a56e2849958c2818f8085f3f8299b50 second commit : think
97b0b9fc81bf3d5ec819a307b876e57c0a866e28 first commit: learn git again
在Git中,用HEAD表示当前版本,也就是最新的提交1b954b4b03f44d797a4ba8301507614f1a5cabee,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
当前版本在thrid commit: girl friend ,想退回到上一个版本,那么就用:HEAD^.
zhanggeng:git_learning (master)$git reset --hard HEAD^
HEAD is now at 421f961 second : why so
当我回退到了版本:thrid commit : girl friend,后悔了,想恢复到新版本怎么办?
当我用$ git reset --hard HEAD^回退到旧版本想回到新版本,就必须知道新版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
zhanggeng:git_learning (master)$git reflog
421f961 HEAD@{0}: reset: moving to HEAD^
1b954b4 HEAD@{1}: reset: moving to 1b95
c520dac HEAD@{2}: reset: moving to HEAD^^
1b954b4 HEAD@{3}: reset: moving to HEAD^
e5de772 HEAD@{4}: commit: four commit : error
1b954b4 HEAD@{5}: commit: thrid commit : girl friend
421f961 HEAD@{6}: commit: second : why so
c520dac HEAD@{7}: commit: first commit : for cat txt
ab88d5c HEAD@{8}: reset: moving to HEAD^
a8798fe HEAD@{9}: commit: four commit: what?
ab88d5c HEAD@{10}: commit: thrid commit : do what
4811639 HEAD@{11}: commit: second commit : think
97b0b9f HEAD@{12}: commit (initial): first commit: learn git again
总之:Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。