更改已推送的Git提交


change a git commit already pushed

本问题已经有最佳答案,请猛点这里访问。

在Git中进行合并时,我意外地重写了另一个开发人员的更改。我知道如何撤消上一次提交,也就是我的合并。

我的问题是,我已经将这些提交推送到了我们的在线存储库中。因此,如果我回滚,是否再次进行合并(这次对其进行了修改),并尝试再次推送合并,将出现冲突(对吗?).处理这件事的正确方法是什么?

编辑澄清一下,情况如下:

1
commit A --- commit B --- merge

但在合并中,我意外地放弃了在提交A中所做的修改,这实际上不是问题。我知道如何在本地进行更改(撤消合并)。但我的问题是,整个问题都被推到了我们的共享存储库中(比如github或bitback)。


默认情况下,远程服务器将不允许覆盖已推送的提交。这是因为这些新提交是不同的对象,与以前发布的对象不兼容。这意味着,从那以后已经从远程获取的任何人在覆盖提交之后都将遇到修复它的主要问题。所以你真的应该重新考虑用其他东西覆盖提交。请注意,git revert也适用于合并提交,因此您可能需要考虑这一点。

也就是说,即使重写提交与服务器上的内容冲突,您仍然可以推动它。简而言之,您可以使用git push --forcegit push -f通过强制推动来实现这一点。