是否可以在 GitHub 上撤消 git push --force ?

amp*_*ent 6 git github

我认为git push --force它只会推送当前分支,但它会推送所有分支。真正的损坏只对我同事的几个分支造成,我已经很长时间没有拉动了,因此,通过这样做(由 启用--force),我完全重置了自我以来在远程上所做的所有提交。最后拉。

如果我没有去找我的同事要求他们推送最新的当地分支机构来GitHub消除我造成的损害,我能做些什么来消除它吗?不幸的是,我所做的相当于git reset --hard,这意味着我取消了此后的所有提交。有什么办法可以撤销吗?

pok*_*oke 3

不。如果您在本地存储库中没有这些远程分支指向的旧提交,那么您就不走运了。GitHub 不给你这个能力。

\n\n

您将不得不要求您的同事再次强制推送他们的分支以恢复之前的状态。

\n\n

如果简单git push更新了所有分支,那么您可能需要检查您的push.default配置。我建议要么simple要么upstream以避免错误。

\n\n

希望这能告诉您将来避免强行推送任何东西;)它\xe2\x80\x99 很危险,现在您已经体验到了原因。如果你想要更安全一点,git push --force-with-lease以后可以使用。这样,如果您的远程分支与实际的remote\xe2\x80\x99s 状态不匹配,Git 不会强制推送任何内容。因此,如果您有一段时间没有获取\xe2\x80\x99t,则无法强制推送。它不会\xe2\x80\x99 阻止你犯所有错误,但也许会犯一些错误。在这种情况下,它允许您恢复原始状态(因为它本质上要求您的存储库中具有远程\xe2\x80\x99s状态,因此您可以返回)。

\n

  • 实际上,我能够做到这一点:`git reset --hard origin/remotebranch@{1}` (10认同)
  • @amphibient 但这应该只允许您恢复到该远程分支的旧版本。如果您最近没有获取,那么该版本仍然过时。 (2认同)