我提交了一些更改,并在github中推送到远程分支。 但后来我意识到我在提交中犯了一些错误,然后推了推 很多错误的文件。有没有办法恢复推动?
答案 0 :(得分:11)
git revert
命令不会重写历史记录,但会通过新提交从提交中删除更改。那么你所要做的就是再次推动。这是建议的方法。
如果你真的想让github看起来像一个特定的提交从未真正发生过,有一种方法,但要小心(特别是如果其他用户贡献给github存储库)。事实上,如果其他人使用这个github存储库,请立即停止并使用第一段中提到的方法。
如果这是您自己的私有github存储库,那么最后一次推送是您需要带走的(假设您仍然在同一个本地分支上):
git reset --hard HEAD~
git push -f
如果不是最后一次推送,请参阅git cherry-pick
或git 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}}。
在完成所需的恢复后,只需再次向上推!