美文网首页
如何恢复丢弃的 git stash 数据

如何恢复丢弃的 git stash 数据

作者: addstore | 来源:发表于2021-06-22 10:45 被阅读0次

    意外总是如期而至,如果你看到这篇文章,首先,心态不要崩。
    先看这篇推荐https://zhuanlan.zhihu.com/p/28948567,理论上只要有足够的耐心,就能解决问题。
    这里简单描述一下推荐文中提到的方法:
    1、git fsck --unreachable,返回结果中有commit 、blob 、tree、tag不同的类型
    2、git show recordId, recordId从第1步中获得,长这个样子:95ccbd927ad4cd413ee2a28014c81454f4ede82c。
    3、git stash apply 95ccbd927ad4cd413ee2a28014c81454f4ede82c 应用对应的stash。

    提示: 实际上,不是所有的id都可以使用git stash apply xxx, 有的需要使用git merge xxx,具体如何分别,我还没研究,欢迎补充。

    使用推荐文章中的方法,很可能在执行 git fsck --unreachable命令后得到茫茫多的信息。我自己遇到问题时, git fsck --unreachable | wc -l 输出了696条。在逐条git show [记录id]时,如果文件较长,可能还要翻页才能看到修改的地方。

    很遗憾,这些记录id没有时间参数,无法按照时间筛选,也没啥可以找出的规律。如果记录较多,逐条寻找,很容易让人沮丧。
    那么接下来,这里提供一个思路,具体步骤为:
    0、git fsck --unreachable 时可以增加筛选条件 “| grep commit”,可以提高效率
    1、使用脚本工具,批量导出每一个git show [记录id] 到单独的文本文件中
    2、使用常用的ide,如vscode、webstorm等,全局搜索最近修改过的关键字,尽量缩小范围。这一步骤,能够极快的找到新增的文件,修改的文件通常也能找到。
    3、经过以上两步,基本上就能筛选出目标文件,如果遇到相同文件出现多次,就需要仔细对比,选择最需要的版本。

    以上,相当于对推荐文章的一个补充。
    良好的git使用习惯,特别指出两点:
    1、尽早git commit, 完成阶段成果,尽量尽早提交。因为,提交的记录更容易找回。
    2、善用git stash, 如果代码质量不高,不想提交污染代码库,可以随时使用git stash 保存修改结果。每一次git stash clear 都要三思后行。

    相关文章

      网友评论

          本文标题:如何恢复丢弃的 git stash 数据

          本文链接:https://www.haomeiwen.com/subject/bgppyltx.html