如何在Git中撤销已丢弃的本地更改?

4
让我们假设有一个文件a被Git跟踪并在本地修改。此外,该文件也在存储中。
然后:
如果您执行了git stash pop,请参见此链接 如果您意外执行了git checkout a,则您已经失去了更改。
这会丢弃文件中的所有更改。
如何撤消此操作?
我在reflog中没有看到此操作。
弹出后Stash不存在(未列出),但该历史记录是否在.git目录的某个地方可用?

4
看起来这可能正是你需要的:如何在Git中恢复一个丢失的存储(stash)。 - jthill
1个回答

2
“reflog”仅跟踪分支的提示已更新的时间,因此我不会期望在那里看到您的更改。
来自doc
引用日志或“reflogs”记录了本地存储库中分支和其他引用的提示何时更新。
很抱歉,在这种情况下使用“checkout”意味着这些更改已丢失。
“stash”可能是一个更安全的选择。
编辑:
如果这种损失很严重,您可以通过查看@jthill在原始问题上的评论来进行一些挖掘。

那个文件 曾经 在堆栈中弹出,这会有任何更改吗? - Sławomir Lenart
@ups 从您的堆栈中弹出东西会将它们从该堆栈中删除,因此我认为它仍然丢失...但是,如果您使用的是“apply”而不是“pop”,它仍然可以检索。您确定您的更改不是以前提交的一部分吗? - Jonathan.Brink

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