我把我的回购搞得一团糟。
我做了一些更改并将它们推送到 repo 并且现在我想撤消它。(我合并的东西都错了)
在我的本地机器上,我使用以下命令完成了该操作:
git reset --hard 72a535b
这似乎成功了。然后我正确地实施了更改,提交并尝试推送。
当然那是失败的错误
拒绝非fast0forward refs/heads/master(你应该先拉)
我认为我不想这样做,因为我会失去我的更改并回到第一组损坏的模组。
我怎样才能解决这个可怕的烂摊子?
假设没有人取消您的“坏”更改,请强制推动:
git push -f
服务器拒绝正常推送,因为它会导致服务器端 repo 丢失更改(你的烂摊子)。在这种情况下,这似乎是你想要的,所以继续强制它。请注意,强制推动通常是一件危险的事情,因为您可能会失去历史。
如果其他用户已经拉取了您的更改,它可能会变得一团糟,因为那样他们必须以有意义的方式解决冲突,然后才能推送。因此,如果您在项目中有任何合作者,请务必检查他们是否已经获得了您的代码副本,如果有,请警告他们您将要做什么,并确保他们尽快提取正确的版本它是可用的。
您最好和安全的选择是
git 还原好的,它会创建额外的提交,并且您的错误提交会终生保留。买为什么在乎。只要分支的顶部是干净的,为什么要隐藏过去的错误。