如何在GitHub中将推送恢复到存储库

时间:2013-11-07 01:55:16

标签: git

我提交了一些更改,并在github中推送到远程分支。 但后来我意识到我在提交中犯了一些错误,然后推了推 很多错误的文件。有没有办法恢复推动?

2 个答案:

答案 0 :(得分:11)

git revert命令不会重写历史记录,但会通过新提交从提交中删除更改。那么你所要做的就是再次推动。这是建议的方法。

如果你真的想让github看起来像一个特定的提交从未真正发生过,有一种方法,但要小心(特别是如果其他用户贡献给github存储库)。事实上,如果其他人使用这个github存储库,请立即停止并使用第一段中提到的方法。

如果这是您自己的私有github存储库,那么最后一次推送是您需要带走的(假设您仍然在同一个本地分支上):

git reset --hard HEAD~
git push -f

如果不是最后一次推送,请参阅git cherry-pickgit rebase的手册页,以使本地目录与您希望github在执行git push -f之前的样子相匹配。如果您未向-f提供git push选项,则不会重写历史记录。如果尝试重写历史记录,任何推送都将失败。 -f选项默认情况下应

答案 1 :(得分:0)

请记住,一旦将提交推送到远程存储库,您应该谨慎行事,特别是如果您有意重写历史记录(即通过重新定位删除所有不需要的提交)。

如果您不关心历史记录,则可以使用git revert并向其传递要撤消的提交标识符来恢复您的错误更改。

例如,如果您在两个提交A和B中包含更改,则要删除:

git revert A B

这将恢复提交A和B,为每个提交提交。

默认情况下,Git会在HEAD之上创建其他提交,以说明要还原的更改。有关如何使用它的更多详细信息,请查看git revert {{1}}。

在完成所需的恢复后,只需再次向上推!