我提交了一些更改,并推送到 github 中的远程分支。但后来我意识到我在提交中犯了一些错误,并推送了很多错误的文件。有没有办法恢复推送?
2 回答
该git revert
命令不会重写历史记录,但会使用新提交从提交中删除更改。那么你所要做的就是再次推动。这是建议的方法。
如果你真的想让 github 看起来像一个特定的提交从未真正发生过,有一种方法,但要小心(特别是如果其他用户对 github 存储库有贡献)。事实上,如果其他人使用这个 github 存储库,现在停止并使用第一段中提到的方法。
如果这是您自己的私有 github 存储库并且最后一次推送是您需要带走的(假设您仍在同一个本地分支上):
git reset --hard HEAD~
git push -f
如果这不是最后一次推送,请查看其中一个的手册页git cherry-pick
,或者git rebase
在执行git push -f
. 如果您不提供-f
选项 to git push
,您将不会重写历史记录。如果它试图重写历史,任何推送都会失败。默认情况下不应使用该-f
选项。
请记住,一旦您将提交推送到远程存储库,您应该谨慎行事,特别是如果您打算重写历史记录(即通过变基删除所有不需要的提交)。
如果您不关心历史记录,则可以通过使用git revert
并向其传递您要撤消的提交标识符来恢复您的错误更改。
例如,如果您在两个提交 A 和 B 中包含更改,您希望删除:
git revert A B
这将还原提交 A 和 B,为每个提交创建一个提交。
默认情况下,Git 将在 HEAD 之上创建额外的提交来说明正在恢复的更改。查看手册页以获取git revert
有关如何使用它的更多详细信息。
进行所需的还原后,只需再次向上推!