GIT ......还原

时间:2012-01-13 17:25:43

标签: git

我的东西已被推送和部署后,我必须恢复到之前的提交。

我使用了git checkout HEAD ^

要检查出来,但现在怎么推呢?它说分支是最新的!

非常感谢任何帮助!“”“

3 个答案:

答案 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^ -- .的操作,则必须在推送之前提交暂存的更改。