如何撤销 Git 的回滚操作

11

在犯了一个严重错误后,我想回滚到最后一次提交,但是我回滚的太远了。当我在bash中输入“git log”时,我想要重新确认的提交不会出现(我想这可能是因为它不在历史记录中)。有没有办法按日期恢复最后一次提交?

我在同一项目中还在使用eclipse中的eGit,如果这能简化事情的话。谢谢。

2个回答

23
如果您能熟练使用命令行,则可以前往您的存储库,执行git reflog命令并获取要“回滚”到的提交,然后执行git reset --hard <commit>命令。您还可以执行git reset --hard HEAD@{1}命令,然后返回egit并回滚到所需的提交。

2
相关: git reflog, 你的安全网 - Dan Ray
挽救了我的一天,也是我的一夜!我本来要重新做一些丢失的工作。 - er-han

2
我发现通常最好是向前进行更改,而不是向后。
Git的方法是“撤销”提交。当您撤销提交时,您将检出所涉及提交的相反内容到您的工作目录中。然后您添加并提交该内容,这样您就创建了一个新的提交,它提交了您要撤销的提交的“撤销”,并且在历史记录中留下了这样的记录,因此如果您想撤消您的撤消,那么这很容易做到。

当你意识到之前做了错误的事情并且已经成为历史的一部分(即被分享给他人),最好不要记录它。记录错误提交意味着像 git bisect 这样的工具会更容易出现问题。 - Phil Miller
我想那是真的。我发现清晰的提交信息可以避免我在这方面遇到太多麻烦。如果我需要撤销我的撤销(有时我确实需要),有这些信息可以帮助我进行还原。 - Dan Ray

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