有没有办法回滚我最后一次推送到Git?

Ope*_*erX 133 git

可能重复:
撤消'git push'

我推了一些不好的代码,我是存储库的唯一用户.我怎么能回滚我的最后一次提交?

man*_*lds 200

由于您是唯一的用户:

git reset --hard HEAD@{1}
git push -f
git reset --hard HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

(基本上,返回一个提交,强制推送到repo,然后再返回 - 如果你不关心提交,删除最后一步)

如果不对本地仓库进行任何更改,您还可以执行以下操作:

git push -f origin <sha_of_previous_commit>:master
Run Code Online (Sandbox Code Playgroud)

一般来说,在公布回购,是比较安全的做git revert,然后git push

  • 为"通常,在已发布的回购中,使用git revert然后git push更安全".我建议在远程中重写历史记录的唯一原因是因为OP是唯一的用户.如果你与他人分享,不要倒退,只能前进. (2认同)
  • 为什么在`git push -f`之后有第二个`git reset --hard HEAD@{1}`? (2认同)

Ken*_*oom 74

首先,您需要确定上次已知提交的修订ID.您可以使用HEAD^或者HEAD~{1}如果您知道需要反转一个提交.

git reset --hard <revision_id_of_last_known_good_commit>
git push --force
Run Code Online (Sandbox Code Playgroud)

  • 你把我从灾难中救了出来,非常感谢你 (3认同)
  • 这应该在顶部。 (3认同)
  • 请注意,如果您有任何隐藏的东西,使用--hard将删除您当地的工作. (2认同)