记一次误删 git stash 文件恢复操作

恢复丢弃的 git stash 数据

介绍

在使用 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 stash 文件恢复操作_第1张图片

然后使用 git show 一个个对输出的对象进行查看:

记一次误删 git stash 文件恢复操作_第2张图片

很明显可以看到输出,简单确认后你可以判断这个文件是不是你误删的,找到后进行备份转储。

git show 302063e31742cbce7c5fdb917edf520183154cc1 > D:\recovery\backup.txt

该命令可以将显示的内容输出到指定的路径

就这样笔者一步步找回了代码了!!

值得一提

在使用 git fsck –unreachable 命令输出的很多文件里面,有很多是带有 committree 的标识的,这些可以使用 git stash apply 加标记号进行找回。而 blob 的文件是只能手动拷贝的,或者像上面一样使用> 输出到指定的路径去

参考资料

https://linux.cn/article-8819-1.html

你可能感兴趣的:(个人随笔)