3

我把我的回购搞得一团糟。

我做了一些更改并将它们推送到 repo 并且现在我想撤消它。(我合并的东西都错了)

在我的本地机器上,我使用以下命令完成了该操作:

git reset --hard 72a535b

这似乎成功了。然后我正确地实施了更改,提交并尝试推送。

当然那是失败的错误

拒绝非fast0forward refs/heads/master(你应该先拉)

我认为我不想这样做,因为我会失去我的更改并回到第一组损坏的模组。

我怎样才能解决这个可怕的烂摊子?

4

2 回答 2

7

假设没有人取消您的“坏”更改,请强制推动:

git push -f

服务器拒绝正常推送,因为它会导致服务器端 repo 丢失更改(你的烂摊子)。在这种情况下,这似乎是你想要的,所以继续强制它。请注意,强制推动通常是一件危险的事情,因为您可能会失去历史。

如果其他用户已经拉取了您的更改,它可能会变得一团糟,因为那样他们必须以有意义的方式解决冲突,然后才能推送。因此,如果您在项目中有任何合作者,请务必检查他们是否已经获得了您的代码副本,如果有,请警告他们您将要做什么,并确保他们尽快提取正确的版本它是可用的。

于 2013-08-04T07:36:45.120 回答
1

您最好和安全的选择是

git 还原
好的,它会创建额外的提交,并且您的错误提交会终生保留。买为什么在乎。只要分支的顶部是干净的,为什么要隐藏过去的错误。

于 2013-08-04T08:05:21.267 回答