在我的回购中,我有一个主树枝和一个修理树枝。我做了修正,并把它合并成师父。然后,为了一个愚蠢的错误,我疯狂地做了不可想象的事情。在与git commit --amend
合并之后,我添加了3个要掌握的字符。我改写了历史。然后,令我沮丧的是,它只影响了主程序,而没有影响错误修复程序,因此,如果我运行(在主git branch --no-merged
上),我就会看到bugfix没有合并。因此,我签出错误修复并进行相同的更改,使git diff bugfix master
不返回任何内容,然后从主服务器上再次检查git branch --no-merged
,它仍然说bugfix没有合并。因此,现在我有两个相同的分支,我想要合并,但不是,我不想使用另一个提交。我如何组合它们,使git将它们视为合并,而git branch --no-merged
不返回bugfix?
发布于 2016-08-03 09:37:06
有时候,当你在一条小径上迷路时,最谨慎的做法就是把你的脚步追溯到你没有迷路时的前一点。在您的示例中,我将在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
来撤消坏的提交,而不是重写历史记录。
https://stackoverflow.com/questions/38748095
复制