惊魂一幕啊
刚才执行了么这一系列的操作:
1,把最新写的代理commit到本地,没有push
2.reset --hard 到一个以前的版本.
回头一看....我去``刚提交的版本呢???
本来以为reset --hard只会把head标记带指定版本上, 分支不会变的, 结果分支也下来了`
最新版本就停在已提交到远程的版本上了....
这几天的提交都没了??!!
这可咋整...........
git log也看不到.....
git到底是什么鬼....
放狗搜了一下说--HARD 会删交提交...........
于是做了一下测试``
新提交一个版本``再reset --hard到以前的版本```是会删除之前的提交```
但是如果你在新提交的版本上再加一个分支```reset --hard后提交还是在的``因为已经有一个分支在那里了```
好吧```已经删除了``再放狗看看怎么找回吧```发现了reflog指令:
reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。$ git reflogb7057a9 HEAD@{0}: reset: moving to b7057a998abc5a HEAD@{1}: commit: more stuff added to foob7057a9 HEAD@{2}: commit (initial): initial commit所以,我们要找回我们第二commit,只需要做如下操作:$ git reset --hard 98abc5a再来看一下 git 记录:$ git log* 98abc5a (HEAD, master) more stuff added to foo* b7057a9 initial commit所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后。
总结:
在做一些危险动作以前,比如reset,还是能多打下一分支的好,保险。反正随时可以删。
git没有想的这么危险,就算--HARD这么硬的操作也可以找回的。