我如何在成功使用git stash pop后恢复我的git stash?

4

我在一些文件中做了更改并添加了一些新文件。

git pull:告诉我在几个文件中有冲突。

我的操作:

git stash
git pull
git stash pop

我原以为会有冲突,但实际上没有。

相反,现在很多文件都是空的。当前未提交的更改显示这些文件中的所有内容都被删除了。

我想到的解决方案是:克隆存储库,"以某种方式恢复"我的上一个弹出的存储,并将其保存为补丁并应用于那里。

如何恢复它(它不再在存储列表中)?

我无法使用以下命令找到最后一个存储:

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

并且
git fsck --no-reflog | awk '/dangling commit/ {print $3}'

给出:
error: object file .git/objects/02/7745a5151a6237eb1dcd8e4f0df10328809669 is empty
error: object file .git/objects/02/7745a5151a6237eb1dcd8e4f0df10328809669 is empty
fatal: loose object 027745a5151a6237eb1dcd8e4f0df10328809669 (stored in .git/objects/02/7745a5151a6237eb1dcd8e4f0df10328809669) is corrupt

我该怎么办?发生了什么事情?


我不认为这与git stash有关,fsck表示您的存储库已损坏。git stash pop不会导致这种情况。你的电脑崩溃了吗? - Schwern
没有,我的电脑没有崩溃。但可能是硬盘损坏的问题。我现在该怎么办? - Sachin Sharma
现在您需要修复一个损坏的代码库。这里有一个关于此主题的问题。https://dev59.com/Bmsy5IYBdhLWcg3w3Rvc - Schwern
2个回答

3
我发现官方文档有一个解决方案。
恢复错误清除/删除的stash条目
如果您误删除或清除了stash条目,它们无法通过正常的安全机制进行恢复。但是,您可以尝试以下方法获取仍在存储库中但不可访问的stash条目列表: (英文链接)
git fsck --unreachable |
grep commit | cut -d\  -f3 |
xargs git log --merges --no-walk --grep=WIP

-4

你尝试过使用:

git stash list

你应该有一个已经完成的存储列表。然后你可以选择要应用的那个:

git stash apply stash@{1}

在应用存储之前,我想您希望将 HEAD 放在第一次 git pull 运行之前的相同位置。


git stash apply 不同,如果 git stash pop 成功,则会从存储中删除该条目。它不会在列表中显示。 - Schwern
是的,它已经成功应用了。不再存在。 - Sachin Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接