首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >丢失的Git Stash内容

丢失的Git Stash内容
EN

Stack Overflow用户
提问于 2015-10-30 19:06:36
回答 2查看 1.3K关注 0票数 0

我想我弄丢了我的Git仓库里的东西。这是我的工作流程:

我在分支A上工作,做了一些修改,然后做了git stash。然后,我签出了我的Master分支,因为我需要从源获取,以使我的master保持最新。由于错误,我在Master中保存了git stash pop和git status,我在Branch A中所做的所有更改都是在那里进行的。

我的关键错误是我不想在Master中包含Branch A阶段的更改,所以我检查了这些更改。这是因为我假设如果我返回到分支A并执行git stash pop,我将返回到最新的更改。

然而,我签出了Branch A,做了git stash pop,我所有的更改都不在那里。一切都回到了最后一次提交。

我确实明白,如果我没有在Master中做git stash pop,我应该在分支A中得到所有的更改-所以我学到了教训。但从长远来看,有没有办法从这种情况中恢复过来?

我试过了:

代码语言:javascript
运行
复制
git stash list

但我的零钱没有藏起来的迹象。实际上,我认为我已经丢失了分支A中的这些更改,但是如果我遗漏了什么,我将非常感谢任何帮助?

EN

回答 2

Stack Overflow用户

发布于 2015-10-30 20:41:47

我找到了一个我想分享的解决方案。

您返回到Branch,在这里您在执行git stash pop之后错误地签出了文件(在我的例子中是Master)。然后你要做的是:

代码语言:javascript
运行
复制
$ git fsck --unreachable

这给了你一个悬空斑点的列表...

代码语言:javascript
运行
复制
unreachable blob 070204aa62dc0ef612f922a02d06d3....
unreachable blob 821c4ca73cb5c99f7fa5f23358e3a9....
unreachable blob b91c74fc1b5c0f8eb8ccfd1a8024c6....

然后我就这么做了

代码语言:javascript
运行
复制
git show 070204aa62dc0ef612f922a02d06d3....

这使您可以查看悬空blob中的内容,但不会给出文件的名称。然后,您可以使用sha1的前5个字符将该内容写入文件

代码语言:javascript
运行
复制
git show f0480 > myfile

这会将'myfile‘放在您当前所在的目录中。此时,Myfile是一个.txt,您可以将其复制并粘贴/转换为正确的MIME类型(在我的例子中为.php)。

我还想指出,我发现vi在recovering dangling commits上的帖子很有帮助

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2015-10-30 19:12:32

在检查了主分支并在那里执行了git stash pop之后,您应该再次执行git stash,它会将所有更改再次放入您的存储中。

根据您所写的内容,我认为这些更改应该仍然在您的分支A上,因为您刚刚从主分支切换回分支A,除非您在主分支上销毁了它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33434540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档