如何在Windows上撤消Git Gui或Gitk中的硬重置?

如何在Windows上撤消Git Gui或Gitk中的硬重置?,windows,git,gitk,git-gui,Windows,Git,Gitk,Git Gui,我在Windows上使用GitGUI和Gitk。如何撤销过去两小时内的硬重置 (是否可以在不使用命令行的情况下从这些应用程序执行此操作?) 我看到了,这说明在git的垃圾收集发生之前,撤销是可能的。我可能已经退出并重新打开了其中一个或两个应用程序。我不认为您可以撤消硬重置以恢复未提交的更改-您可以撤消重新基址,因为blob仍然可用,但是如果您从未将最新更改提交到Git,那么它重写的任何内容都很可能是历史。我很想知道我错了 请参见问题链接中Brian Riehman和Pat Notz的答案 一种解

我在Windows上使用GitGUI和Gitk。如何撤销过去两小时内的硬重置

(是否可以在不使用命令行的情况下从这些应用程序执行此操作?)


我看到了,这说明在git的垃圾收集发生之前,撤销是可能的。我可能已经退出并重新打开了其中一个或两个应用程序。

我不认为您可以撤消硬重置以恢复未提交的更改-您可以撤消重新基址,因为blob仍然可用,但是如果您从未将最新更改提交到Git,那么它重写的任何内容都很可能是历史。我很想知道我错了

请参见问题链接中Brian Riehman和Pat Notz的答案

一种解决方案是使用命令行

在Windows中,在包含
.git
目录的目录中打开DOS

键入类似于以下内容的内容,以查看要转到的提交:

"c:\Program Files\Git\bin\git.exe" reflog
要转到某个提交,请键入以下内容,其中最后一个表达式是该提交的SHA1代码:

"c:\Program Files\Git\bin\git.exe" reset --hard 5eb4080
  • 如果在git重置时,工作树中有未提交的更改——很难,这些更改将永远消失。你必须用你的记忆(在你的头脑中)来重建它们

  • 在您切换到的提交之后提交的更改不会丢失。它们可能没有指向它们的参考,这使得它们更难定位。列出回购协议所有低级变更的工具是
    git reflog
    。 找到要还原的提交以观察第一行中的哈希数,然后使用
    git reset--hard#hashnumber
    git checkout#hashnumber
    获取更改。 我发现这句话很有用:

  • 
    gitk——全部美元(git reflog | cut-c1-7)
    

    这将在gitk中显示所有隐藏的更改,在这里您可以轻松地查看、指向、单击并创建新分支

    正如您提到的,未引用的提交通常在存储库中保存30天


    编辑:我必须在这里添加内容,以便我的编辑至少为6个字符。我知道,有时代码修复少于6个字符,但毕竟,在这篇文章中可能还有其他需要改进的地方。

    我在前一天对提交进行了硬重置。我能收回那些后续的提交吗?这实际上是一个通用的git问题,解决方案也很通用。由于这个问题与windows无关,我认为您应该删除windows标记。