失去了Git Stash的内容

时间:2015-10-30 11:06:36

标签: git version-control

我相信我丢失了Git Stash的内容。这是我的工作流程:

我在分支A上工作,做了一些修改,然后做了git stash。 然后我检查了我的主分支,因为我需要从原点获取以保持我的主人最新。 错误的是,我在Master中进行了git stash pop和git status,我在分支A中所做的所有更改都已上演。

我的一个重要错误是我不想在Master中包含分支A阶段的变化,所以我检查了这些。这是因为我假设如果我回到分支A并做了git stash pop,我会回到最新的变化。

然而,我结帐了分支A,做了git stash pop,并且我的所有更改都没有。一切都回到了最后一次提交。

我明白如果我没有在Master中执行git stash pop,我应该在分支A中得到所有的更改 - 所以吸取了教训。但作为一个长镜头,有没有办法从中恢复?

我试过了:

git stash list

但没有迹象表明我的变化存在。我现实地认为我已经失去了分支A的那些变化但是如果有什么我错过了我会感激你的任何帮助吗?

2 个答案:

答案 0 :(得分:3)

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

你回到分支,在你做了git stash pop之后你错误地检查了文件(在我的情况下为Master)。然后你做:

mainHolder.imageview.setOnClickListener(new View.OnClickListener()
    {
        public void onClick (View v)
        {
            mainHolder.checkBox.setChecked(!mainHolder.checkBox.isChecked());
        }
    }
    );

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

$ git fsck --unreachable

然后我做了

unreachable blob 070204aa62dc0ef612f922a02d06d3....
unreachable blob 821c4ca73cb5c99f7fa5f23358e3a9....
unreachable blob b91c74fc1b5c0f8eb8ccfd1a8024c6....

这使您可以查看悬空blob中的内容,但不会显示文件的名称。然后,您可以使用sha1

的前5个字符将该内容写入文件
git show 070204aa62dc0ef612f922a02d06d3....

这会让我的文件'在你当前所在的目录中。此时的Myfile是.txt,然后你可以复制并粘贴/转换为正确的MIME类型(.php)。

我还想指出我在recovering dangling commits上找到了vi的帖子

希望这有帮助。

答案 1 :(得分:1)

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

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