![](/img/trans.png)
[英]Git reset --hard head (revert) not updating Symbolic Link targets in Windows
[英]How do you undo a hard reset in Git Gui or Gitk on Windows?
我在Windows上使用Git Gui和Gitk。 如何在过去两小时内撤消硬重置?
(是否可以在不使用命令行的情况下从这些应用程序执行此操作?)
我看到了这个SO帖子 ,它说在git的垃圾收集发生之前,undos是可能的。 我可能已经退出并重新打开这些应用程序中的一个或两个。
如果您在执行git reset --hard时未在工作树中进行更改,那么这些更改将永远消失。 你必须使用你的记忆(在脑中)重新创建它们。
在您切换的提交之后提交的更改不会丢失。 他们可能没有指向他们的参考,使他们更难找到。 列出repo的所有低级更改的工具是git reflog
。 找到要恢复的提交后,观察第一行中的哈希值并使用git reset --hard #hashnumber
或git 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.