2016-08-03 109 views
1

在我的回购中,我有一个主分支和一个错误修复分支。我做了我的错误修正,并将其合并到主。然后,在一个疯狂的愚蠢的错误中,我做了不可思议的事情。在与git commit --amend合并后,我添加了3个字符。我重写了历史。然后,令我沮丧的是,它只影响到master,而不是bugfix,所以如果我运行(在master上)git branch --no-merged我看到bugfix没有合并。所以,我签出bugfix,并做出相同的更改,使git diff bugfix master什么也没有返回,然后从主控我再次检查git branch --no-merged,它仍然说bugfix没有合并。所以,现在我有两个相同的分支,我想合并它们不是,我不想使用另一个提交。我如何将它们合并,让git将它们视为合并,并且git branch --no-merged不会返回bugfix?“合并”两个相同的分支

+2

撤消合并提交,再次合并,并从那里开始。我认为你所走的道路不会有结果(至少没有你想吃的东西)。 –

+0

即使你做了修改,提交仍然有两个父母,并且是一个合并提交,所以没有任何意义,之后bug修复显示在 - 没有合并。 – DavidN

+0

@DavidN我不知道它为什么发生,我只是列出发生在我身上的事情。我会试着重现它,并让你知道我是否可以。 – thesecretmaster

回答

1

有时候当你迷路时,最谨慎的做法就是当你没有迷路的时候,将你的脚步回溯到前一点。在你的情况下,我会撤销master中的修改合并提交,并在bugfix中核实“修复”提交。然后重做合并而不做任何其他更改。

撤消错误提交的修正:

git checkout bugfix  # switch to bugfix 
git reset --hard HEAD~1 # nuke the fix commit 

撤消合并犯主:

git checkout master  # switch to master 
git reset --hard HEAD~1 # nuke the amended merge commit 

现在你可以重做合并:

git merge bugfix 

注意:这个答案假设您还没有将任何东西推到遥控器上。如果有,那么您将需要使用git revert来撤销错误提交而不是重写历史记录。