美文网首页
如何恢复丢弃的 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://zhuanlan.zhihu....

  • GIT的使用

    教程地址 查看状态 git status 暂存 git stash 恢复暂存 git stash pop 更...

  • stash相关

    1,git stash 保存当前工作区到git stack 2, git stash pop [ id]恢复最近或...

  • git-stash的使用

    一、命令: git stash [save] 保存脏状态,恢复修改前状态 git stash pop 提取脏状态 ...

  • git基本命令

    git常用命令 git丢弃更改相关 git连接远程仓库相关 git切换分支相关 git stash相关 git标签相关

  • git储藏与清理

    保存当前工作进度:git stash查看储藏的东西:git stash list恢复储藏的工作重新应用方法一:g...

  • Git stash 技巧

    Git stash常用技巧 git stash save git stash list git stash app...

  • 找回被删除的 Git Stashes

    Git 的 Stash 功能很方便的帮我们存一些临时代码,如果不小心把 Stash 代码删除了如何恢复呢?使用 g...

  • stash 操作暂存区

    涉及命令:git stash、stash list、git stash apply、git stash drop ...

  • 恢复被删除的Git stash记录

    场景: 使用Git stash命令或者SourceTree暂存了工作现场,之后误删了这个stash 恢复方法: 第...

网友评论

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

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