git 恢复之前的版本可以写下面一行命令实现
git reset —-hard HEAD^
(head代表当前的版本,加一个 ^ 代表现在的版本的上一个,加两个 ^^ 代表上上一个)
让我们来看一些例子:
$git init
$touch foo.txt
$git add foo.txt
$git commit -m "initialcommit"
$echo 'newdata'>>foo.txt
$git commit -a -m "morestuffaddedtofoo"
你现在看git的历史记录,你可以看到两次提交:
$git log
*98abc5a(HEAD,master)morestuffaddedtofoo
*b7057a9initialcommit
现在让我们来重置回第一次提交的状态:
$git reset --hardb7057a9
$git log
*b7057a9(HEAD,master)initialcommit
这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是reflog就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做reset,checkout等操作的时候,这些操作会被记录在reflog中。
$git reflog
b7057a9HEAD@{0}:reset:movingtob7057a9
98abc5aHEAD@{1}:commit:morestuffaddedtofoo
b7057a9HEAD@{2}:commit(initial):initialcommit
所以,我们要找回我们第二commit,只需要做如下操作:
$git reset --hard98abc5a
再来看一下git记录:
$git log
*98abc5a(HEAD,master)morestuffaddedtofoo
*b7057a9initialcommit
PS: 希望小二写的对大家有所帮助,欢迎留言。