介绍
在使用 git 的时候我们都可能会遇到代码误删的情况的,笔者就遇到了误删 stash 中的代码,在这里记录一下如何找回误操作的 git stash 的代码。
发生情景
在进行多分支管理代码时,我们经常需要在没完成功能的开发时就需要紧急切换到master 分支进行 hotfix。而我们后不想将未完成的代码进行提交,因此就需要进行代码暂存,git 为我们提供了一个简单的代码操作,那就是 git stash。使用该命令我们就可以将代码暂存至代码缓存仓库中,在进行完 hotfix的时候我们只需要再切换回原来的分支进行 git stash pop
即可将缓存的代码进行恢复了。
笔者一如既往的如此操作,终于在一天,在切换分支的时候切换错了,git stash pop
出栈的代码恢复到了别的分支去了,然后笔者也是很眼明手快地删掉了代码。
没听错
是删掉了!!
是删掉了!!
然后就踏上了苦逼的找回代码的历程了。
在此简单记录一下找回代码的步骤。
简单的几步
其实操作十分简单,仅仅几步即可。
使用 git stash pop
其实并没有真正地将文件删掉的,而是删除引用而已,因此我们可以使用 git fsck
命令进行找回,搭配参数--unreachable
,让 git-fsck
显示出所有不可访问的对象。
然后使用 git show
一个个对输出的对象进行查看:
很明显可以看到输出,简单确认后你可以判断这个文件是不是你误删的,找到后进行备份转储。
git show 302063e31742cbce7c5fdb917edf520183154cc1 > D:\recovery\backup.txt
该命令可以将显示的内容输出到指定的路径
就这样笔者一步步找回了代码了!!
值得一提
在使用
git fsck –unreachable
命令输出的很多文件里面,有很多是带有commit
和tree
的标识的,这些可以使用git stash apply
加标记号进行找回。而blob
的文件是只能手动拷贝的,或者像上面一样使用>
输出到指定的路径去
参考资料
https://linux.cn/article-8819-1.html