【发布时间】:2014-07-13 00:35:49
【问题描述】:
在 git 中进行合并时,我不小心覆盖了另一个开发人员的更改。我知道undo the last commit,也就是我的合并。
我的问题是我已经将这些提交推送到我们的在线存储库中。因此,如果我回滚,再次合并合并(这次是他的修改)并尝试再次推送它,就会发生冲突(对吗?)。处理这个问题的正确方法是什么?
编辑 澄清一下,情况如下:
commit A --- commit B --- merge
但在合并中,我不小心丢弃了提交 A 中所做的修改。这并不是真正的问题。我知道如何在本地进行更改(撤消合并)。 但是我的问题是整个东西已经被推送到我们的共享存储库(想想 github 或 bitbucket)。
【问题讨论】:
-
请注意“更改修订”实际上是“删除修订并添加新的不同修订”。
-
这似乎不是建议问题的重复。该建议涵盖回滚本地更改,但此处的 OP 询问是否将远程存储库回滚到以前的状态。
-
我认为最干净的解决方案是使用
git cherry-pick重新应用提交 A 补丁。这样,您将添加到历史记录而不是更改它,如果历史记录被发布,这总是一个坏主意! -
@nha 是的,所有权将被保留。
-
正如@poke 在他的回答中提到的那样,您也可以
git revert合并。所以也许这是另一种选择!
标签: git