如何重置已恢复的最后一个存储,但随后错误地丢失了其中包含的更改?

How do I reset the last stash which was recovered, but then lost the changes it contained by mistake?

我正在使用 GitHub 桌面并恢复了我的存储,但是当我继续工作时错误地覆盖了这些更改,无法使用 VS Code 恢复。 (用crtl+z回溯文件历史,然后误覆盖了那些改动)。

有没有什么办法可以让我找回藏匿的东西,即使它没有被丢弃? 我在 Windows 10,尝试了以下命令,但我认为它只列出了丢弃的存储提交:git fsck --no-reflogs | find "dangling commit"

理想情况下,我需要一种方法来列出所有最近的存储提交,无论它们是被删除还是恢复。然后用 git stash apply *hash*.

恢复它们

总结 : 下图中的恢复按钮是我点击将存储应用到我的本地存储库的按钮。但是,现在我丢失了那些恢复的更改。我想取回我的藏品,以便我恢复这些更改,因为这似乎是我唯一能做到的方法。

我能够使用以下命令恢复存储:

  • 命令列出所有 lost/unreachable 像提交一样存储 git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk
  • 使用上一个命令
  • 中列出的哈希值之一显示 git show *hash* 的内容
  • 如果提交是正确的,使用 git stash apply *hash* 恢复更改。

请注意,在 Stack overflow 上发布问题之前我已经尝试过了,但是 windows 无法识别这些命令,因为它们 Linux commands.To 解决了这个问题,我安装了 cygwin它允许您在 windows 中使用 linux 命令:

  • 安装https://www.cygwin.com/ (Follow vid for installation and setup : https://www.youtube.com/watch?v=4zp7m7nkt-A)
  • 现在可以在 Cygwin 终端中使用 Linux 命令
  • 能够在 windows cmd 中使用 linux 命令。确保 bin 文件夹路径在 env 路径变量中可用。
  • 关闭所有终端,以及GitHub桌面,然后在项目根文件夹再次打开windows命令行,然后执行ls命令。如果它列出了您的目录文件夹和文件,则表示您的配置成功。