撤消意外的git合并而不回退历史

时间:2011-05-16 17:50:28

标签: git

我做了一些愚蠢的事情,并意外地将一个主题分支合并到我的主分支中,然后将其推送到github(其他人已经拉过)。为了确保这是一个完全愚蠢的错误,我把它拉到我的生产服务器上。

我在适当的时间里羞愧地垂头丧气,现在我需要弄清楚如何在推进提交历史的同时有效地回滚代码提交。

为了让我的生产代码正确结帐,我运行了git checkout hashoflettersandnumbers,这就是我想要生产HEAD的提交。

我运行git reset hashoflettersandnumbers然后git clean以从该提交中删除更改,但我似乎无法将该代码作为主分支的HEAD并进行新的提交。

1 个答案:

答案 0 :(得分:5)

在每个分支上使用git revert。这将创建一个新的提交,可以永久保留您的错误,但会返回与合并之前相同的树。

例如,如果123456是合并提交...

$ git checkout master
$ git revert 123456
$ git checkout topic-branch
$ git revert 123456

这假设这不是“快进”合并。