2015-10-30 144 views
0

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

我正在分支A上做了一些更改,然后做了git存储。 然后,我检查出我的主分支,因为我需要从原点取回,以使我的主人保持最新状态。 错误地,我在Master中做了git stash pop和git status,在这里我在分支A中做了所有的改变。

我的关键错误是我不想在Master中包含分支A的分段更改,所以我查了一下。这是因为我认为,如果我回到分支A并且做了Git存储流行,我会回到最新的变化。

但是,我结帐分行A,没有混帐藏匿流行,并且我所有的更改都不存在。一切都回到了最后一次提交。

我明白,如果我没有在Master中做Git Stash流行音乐,我应该在分支A中得到所有的变化 - 所以经验教训。但作为一个远投,有什么办法可以从中恢复?

我曾尝试:

git stash list 

但没有与我的变化藏匿的迹象。我真的认为我已经在分支A中失去了这些变化,但是如果有什么我错过了,我会很感激任何帮助?

+0

这可能会帮助你http://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git – shirakia

+0

看看那个。感谢您的帮助 – Hexana

回答

1

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

从你写的内容来看,我认为这些改变应该仍然在你的分支A上,因为你只是从主控切换回分支A.除非你在主控上摧毁它们。

+0

是的,我认为我已经摧毁了他们在主人:(这就引发了问题......有没有办法恢复主机中未经处理的更改(或检出的文件)? – Hexana

+0

因此,尝试从链接粘贴解决方案通过shirakia – grimsock

+0

做了这个和更多的研究,并找到了我共享的解决方案 – Hexana

2

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

你回到分支,你在做git存储流行(在我的情况下,主)后错误地检出了文件。然后,您这样做:

$ git fsck --unreachable 

这给你悬空斑点的列表...

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

然后我做了

git show 070204aa62dc0ef612f922a02d06d3.... 

这允许您查看在晃来晃去的blob内容,但不会给你文件的名称。然后,您可以通过使用SHA1

git show f0480 > myfile 

这使得“MYFILE”你是目前英寸MYFILE在这一点上目录的前5个字符写的内容到一个文件是一个.txt,您可以再在我的情况下,复制并粘贴/转换为正确的MIME类型(.php)。

我也想指出的是,我发现六的岗位上recovering dangling commits有用

希望这有助于。