撤消已推送到远程仓库的提交

时间:2013-11-01 14:51:24

标签: git git-commit

我们对分支进行了一些更改,提交并将它们合并到master,然后推送到远程。随后我们做了更多的提交来掌握并推动那些与合并相关的事情。

事实证明,合并和后续修改是解决问题的错误方法,我们希望在合并之前恢复。在查看SO Git for beginners guide时,我看到了reset命令,但是对于已经推送的更改是否足够好,调用reset然后推送?

这不是我们的情况,但是假设在我们合并之后,做了一些修复提交/推送后,还有其他的,无关的推动掌握,什么是一个好方法只有撤消我们的变化,而不是不相关的变化?

3 个答案:

答案 0 :(得分:3)

这里有两种方法。 第一个是reset您的本地分支,就好像这些更改从未存在过,然后强制更新远程分支:

git rest <hash>
git push https://git.... --force

这种方法的主要问题是它为使用遥控器的其他人创造的难度。

恕我直言,更“优雅”的解决方案是恢复变革 - 即承认已经犯了错误,并纠正它,保留历史。

您可以使用git revert <hash>创建一个附加提交来撤消有问题的提交,然后只需git push就像其他每次提交一样。 优点是您可以随时修改提交消息,并解释原始解决方案错误的原因,以及为什么必须撤消它。

答案 1 :(得分:1)

git reset --hard <tag/branch/commit id>

检查here了解更多信息

答案 2 :(得分:1)

这个问题已在这里提出

Rewriting git history with a private remote repository

如果其他人在存储库上执行了git pull,那么最常见的方法是还原提交搜索它,有很多问题,有很多答案,找到最合适的问题。

为了避免将来出现这些问题,请始终使用临时“主题”分支,直到您对结果感到满意为止。