我们对分支进行了一些更改,提交并将它们合并到master,然后推送到远程。随后我们做了更多的提交来掌握并推动那些与合并相关的事情。
事实证明,合并和后续修改是解决问题的错误方法,我们希望在合并之前恢复。在查看SO Git for beginners guide时,我看到了reset命令,但是对于已经推送的更改是否足够好,调用reset然后推送?
这不是我们的情况,但是假设在我们合并之后,做了一些修复提交/推送后,还有其他的,无关的推动掌握,什么是一个好方法只有撤消我们的变化,而不是不相关的变化?
答案 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,那么最常见的方法是还原提交搜索它,有很多问题,有很多答案,找到最合适的问题。
为了避免将来出现这些问题,请始终使用临时“主题”分支,直到您对结果感到满意为止。