在我的回购中,我有一个主分支和一个bugfix分支。我做了我的bugfix,并将其合并为master。然后,在一场愚蠢的错误中,我做了不可思议的事情。在与git commit --amend
合并后,我添加了3个字符。我重写了历史。然后,令我沮丧的是,它只影响了master,而不是bugfix,所以如果我运行(在master上)git branch --no-merged
我看到bugfix没有合并。所以,我检查错误修正并进行相同的更改,使git diff bugfix master
不返回任何内容,然后从主人再次检查git branch --no-merged
,它仍然说错误修复未合并。所以,现在我有2个相同的分支,我想要合并但不是,我不想使用另一个提交。我如何组合它们以便git将它们视为合并而git branch --no-merged
不返回错误修复?
答案 0 :(得分:1)
有时当你迷失在路上时,最谨慎的做法是在你没有迷路时将你的步骤回到前一点。在您的情况下,我将在master
中撤消修改后的合并提交,并在bugfix
中修改“修复”提交。然后重做合并而不做任何其他更改。
在错误修正中撤消错误提交:
git checkout bugfix # switch to bugfix
git reset --hard HEAD~1 # nuke the fix commit
撤消master中的合并提交:
git checkout master # switch to master
git reset --hard HEAD~1 # nuke the amended merge commit
现在您可以重做合并:
git merge bugfix
注意:此答案假设您尚未将任何内容推送到遥控器。如果有,那么您将需要使用git revert
撤消错误提交,而不是重写历史记录。