繁体   English   中英

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

[英]How do you undo a hard reset in Git Gui or Gitk on Windows?

我在Windows上使用Git Gui和Gitk。 如何在过去两小时内撤消硬重置?

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

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

  1. 如果您在执行git reset --hard时未在工作树中进行更改,那么这些更改将永远消失。 你必须使用你的记忆(在脑中)重新创建它们。

  2. 在您切换的提交之后提交的更改不会丢失。 他们可能没有指向他们的参考,使他们更难找到。 列出repo的所有低级更改的工具是git reflog 找到要恢复的提交后,观察第一行中的哈希值并使用git reset --hard #hashnumbergit checkout #hashnumber来获取更改。 我在http://quirkygba.blogspot.com/2008/11/recovering-history-with-git-reflog.html上找到了这个有用的专栏

gitk --all $(git reflog | cut -c1-7)

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

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

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

请参阅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,任何它改写最有可能的历史。 我很想知道我错了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM