记一次git stash pop之后代码丢失 找回 坑

2,104 阅读1分钟

背景就是git stash pop之后,代码不小心用cp -rf 命令强制覆盖了,git stash list已经没有记录了

  • 解决办法: 网上找到的解决方案是使用git fsck,执行完之后会得到很多 id ,其中会标明哪个是 commit,但是这个输出是没有严格的排序的,动辄上百行的输出也让我们焦头烂额,比较简单的情况我们可能用前几个commit, 使用git show <commit-id>就能找到目标

但很可能找不到,这个时候大家可以参考下这个方法

git fsck | awk '{print $3}' > tmp.txt
cat tmp.txt | xargs git show > tmp2.txt

这个方法会把commit记录输出来,已供我们进行搜索,特别是你还记得你想恢复的commit有哪些code改动了的时候,你就可以用它作为关键词搜索到 这个方法拯救了我,非常庆幸

参考 stackoverflow.com/a/37855298/…