2013-11-01 116 views
2

我们对分支做了一些更改,将其提交并合并到主控,然后推送到远程。随后,我们做出了更多的承诺,并将这些承诺推向了与合并有关的领域。撤消已被推送到远程回购的提交

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

这不是我们的情况,但是假设我们合并后,做了一些修正后再提交/推送,还有其他无关的推动力,只有撤消我们的改变才是好的方法,而不是无关的?

回答

3

这里有两种方法。 首先是reset您当地的分行,仿佛这些变化从未存在过,然后强制更新远程分支:

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

这种方法的主要问题是它创造了别人你的远程工作的难度。

更“优雅”的解决方案,恕我直言,是恢复变化 - 即承认错误已作出,并纠正它,保存历史。

您可以使用git revert <hash>创建额外承诺该撤销的问题提交,然后就git push它像其他承诺。 优点是您可以随时修改提交消息,并准确解释原始解决方案错误的原因以及为什么必须撤消该解决方案。

+0

我没有任何问题,承认我们犯了一个错误,所以恢复听起来像走的路......谢谢! (并向其他人回答) – larryq

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

检查here更多信息

1

这个问题已经问这里

Rewriting git history with a private remote repository

如果其他人都对仓库进行git的拉动下,最建议的做法是恢复它的提交的搜索,还有就是这样带着诸多疑问许多人回答并找到最适合你的人。

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