学到了 但也差点吓死了。
这次业务迭代中,后端接口一直没好,所以我在做业务的时候 用到了 git stash 暂存区这个操作,保证没完成的功能先不commit。
结果刚才在敲命令的时候 直接 按照终端提示敲了 git stash clear并且执行了,执行后 就立马意识到不对,四天的工作量啊!!!
不过幸好找到了补救方案,记录一下。
因为 stash 也有相应的 栈来保存你每次的log,所以先看log,命令如下

git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

执行后可以看到相应的 log,找到你对应那次的log hash前缀然后执行 恢复命令如下

git stash apply 你的hash值

这样只能恢复一条,剩下的还需要你一条条找,但是有些情况你可能直接是 git stash 暂存的这个就得一条条hash试,所以建议大家暂存的时候 最好是 git stash push -m "message" 进行暂存操作,这样也好回溯。
现在想想还是有点后怕!!!
展开
28