如何撤销git reset --soft以恢复已修改的文件?

49

我在目录中做了一些本地更改,并使用git commit提交了这些更改。后来我意识到我的更改错误地破坏了我的构建。因此,我在我的repo上执行了git reset --soft

但是我弄糟了,因为我没有备份所有撤消的更改,其中一些确实包含了我想要的新功能。请问如何撤销git reset --soft操作,以便我可以恢复我的已提交更改。


1
之前的提交应该仍然在 reflog 中。但是如果你进行了软重置,更改不应该仍然在你的工作副本中吗? - cHao
https://dev59.com/FHE85IYBdhLWcg3w_I78 - Aaron Blenkush
嗨,感谢指针。实际上我刚刚发现我忘记对一些本地文件执行“git add”操作了。因此,当我第一次提交时,所有处于“暂存”阶段的本地文件的更改都被提交了,而未暂存的更改则丢失了...现在看来我完全搞砸了。有什么办法吗? - dennis
1个回答

94
$ git reflog中,您应该找到一些提交记录。 一旦找到您想要移动到的最新提交,您应该将其重置回您的提交ID $ git reset _Your_Hash_,因为$ git reset --soft仅重置文件而不重置索引或工作树。

4
我还有一堆在git status中显示的更改。在执行git reset --soft之前,这些更改并不存在,因此这个“撤销git命令”的答案似乎不完整。 - jozxyqk
4
非常感谢,当我执行git reset --soft HEAD~26而不是16并强制推送时,我非常恐慌。 - gates

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