背景介绍:
使用 git stash list 查看 stash 的缓存历史,发现有历史记录,为了防止弄混新旧历史纪录,使用git stash clear 清除所有的stash 栈, 再次使用 git stash list 查看是否全部清除,
注意:出错就是在这里,查看的时候不小心忘了输入list,结果把现有的代码全部缓存到了stash 的栈里面,此时发现栈内仍有内容,这时候没有多想,直接执行git stash clear 清除stash 栈的全部内容,结果悲剧了,刚刚写的所有代码全部被清除掉了。
以下是找回代码的步骤, 执行
git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}’ )调出stash 的log,该log 对应stash 的栈缓存纪录,WIP 为midify 内容,index 为add 内容,所以,一般情况下,WIP 比index 内容要全
git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}’ )
然后执行 git stash apply f00c5ab恢复最后stash 的内容
至此,stash 被删除的内容全部被找回