我做了一个git push --force
认为它只会推动当前分支,但它会完成所有分支。真正的损害只发生在我的同事的几个分支上,我已经很长时间没有这样做了,通过这样做(由--force
启用),我完全重置了遥控器上的所有提交。自从我上次拉扯以来已经取得了成就。
没有让我的同事要求他们将他们最新的本地分支推到GitHub
以撤消我所做的损害,我有什么办法可以解除它吗?不幸的是,我所做的相当于git reset --hard
,这意味着我已经完成了所有的提交。有没有办法可以撤消它?
答案 0 :(得分:3)
没有。如果你没有旧的提交,那些远程分支指向你的本地存储库,那么你运气不好。 GitHub不会给你这种能力。
你必须要求你的同事再次强行推动他们的分支恢复以前的状态。
如果简单git push
更新了所有分支,那么您可能需要检查push.default
configuration。我建议simple
或upstream
以避免错误。
这有希望告诉你在将来避免强行推进任何东西;)这很危险,现在你已经体验了原因。如果您想要更高的安全性,可以在将来使用git push --force-with-lease
。这样,如果您的远程分支与实际远程状态不匹配,Git将不会强制推送任何内容。所以,如果你有一段时间没有抓住,你就不能强行推进。它不会阻止你犯下所有错误,但可能会有一些错误。在这种情况下,它将允许您恢复原始状态(因为它基本上要求您在存储库中具有远程状态,因此您可以返回)。