在使用git的时候不小心执行了git stash clear,把git暂存(stash)的记录全部清除了,都是还没提交的代码,一下子全丢失了,泪~,赶紧先把目前的分支代码全部硬备份到本地,防止不小心操作二次丢失
如何进行恢复呢?
git stash clear 之后的恢复解决方案,对git stash drop也是同样生效的
首先执行 git fsck --lost-found会出现

只用关注 dangling commit 后面跟着的 id
然后 git show 对应的 id,查看是不是自己需要恢复的文件内容,尽量从下往上找。

可以按“回车键”或者“下箭头键”查看更多的信息,确定下变更的记录是不是自己要找回的,最后按“q”退出查看

如果是的话,找到对应的 id 之后执行 git merge <id>
因为这个命令是直接作为commit进行提交的,会提示让输入commit的备注信息,不输入不行,我的git默认是vim的编辑器,按a键进入编辑模式,输入备注,然后按Tab键退出编辑状态,输入:wq进行保存即可
然后就还原了
不过还原之后是作为一次 commit 提交到本地的,是处于commit过的,并非暂存状态,如果可以推送的话直接推送即可
如果想再回到暂存(stash)可以执行git reset HEAD^ 把commit的提交进行撤回,撤回后再变更记录里面就可以看到变更回来了

这个时候再对变更进行git stash就可以了
其他方式:
上面执行的是git merge <id>命令进行恢复的,使用git stash apply [id]命令应该也是可以的,简单测试过一次,也是可以恢复的,是直接恢复到非commit状态的,直接可以在IDEA的变更记录可以看到的
所有评论(0)