版权声明:本文章为博主原创,转载请注明出处。保留所有权利。

Contents
  1. 1. 前言
  2. 2. 正文
  • 前言

No! 我不小心drop了我stash的修改!
No! 我不小心reset –hard盖掉了我的修改!
No! ….

如果你在使用git的过程中遇到了上述情况,本文可能对你有所帮助。

  • 正文

以drop了stash为例:

1
2
3
# do some changes
git stash
git stash drop

如何找回被drop的修改?这时要用到一个神奇的命令

1
git fsck

这个命令的用途实际上是用来验证数据库中对象的连通性和有效性(file system check),想要详细了解这个命令可以参考此处,这里只说明如何用这个命令找回丢失的修改

首先执行:

1
git fsck --lost-found

可以看到类似下面的输出:

1
2
3
dangling commit xxxxx
dangling commit yyyyy
dangling blob zzzzz

这些即是检查出来的不可达git对象,这里我们只关注dangling commit类即可。

然后一条条查看,执行

1
git show xxxxx/yyyyy

查看各个对象的修改内容和修改日期,以及修改的base,根据这些信息确定你想恢复的修改;找到后,直接执行

1
git stash apply xxxxx

即可恢复修改!万岁!

注意:这个方法未必一定可行,如果过了太久或者在drop后执行了git gc之类的操作,有可能真的无法找回!

打赏

取消
扫码支持

你的支持是对我最好的鼓励

Contents
  1. 1. 前言
  2. 2. 正文