我的东西已被推送和部署后,我必须恢复到之前的提交。
我使用了git checkout HEAD ^
要检查出来,但现在怎么推呢?它说分支是最新的!
非常感谢任何帮助!“”“
答案 0 :(得分:3)
您有两种选择。您可以使用git revert HEAD
恢复错误提交。这将生成一个撤消先前提交的新提交。然后,您可以将其推送到任何其他提交。
如果您希望历史记录显示从未存在的提交,则可以使用git reset --hard HEAD^
删除提交。 (请注意,这将丢弃您对工作目录所做的任何更改。然后您可以使用-f
标志进行推送以强制从远程存储库中删除提交。请注意,执行此操作时其他人可能会遇到问题,如果他们已经获取了你删除的提交。更重要的是,如果有人在你提交后推送了任何东西,那些提交将会丢失。如果你不确定是否有其他人访问过repo,那么第一个选项是最安全的。
修改强>
正如Jefromi提到的那样,在进行上述任何一项之前,你会想要查看你正在处理的分支机构,否则你将会遇到其他问题。
答案 1 :(得分:2)
git checkout
只需查看旧版本。它并没有真正改变任何事情。 因此,要恢复提交,您需要提交相反的更改。希望这个
有一个特殊的命令git revert *commit-id*
所以要恢复最后一次提交类型
git revert HEAD
但是你无法以这种方式恢复合并提交。为此,您需要指定要还原的父级。可以通过此命令查看父列表
git cat-file -p HEAD
确定所需提交的编号(第一个或第二个),然后运行
git revert -m 1 HEAD
或
git revert -m 2 HEAD
答案 2 :(得分:0)
您必须先提交更改。
此外,如果您只想恢复单个提交,则可以使用git revert <commit>
代替git checkout
。
如果你只做了git checkout HEAD^
,那么无论如何都没有什么可以承诺的;你将在一个“独立的分支”。如果您执行类似git checkout HEAD^ -- .
的操作,则必须在推送之前提交暂存的更改。