"Merge" 两个相同的分支

"Merge" two identical branches

在我的 repo 中,我有一个 master 分支和一个 bugfix 分支。我做了我的错误修复,并将它合并到 master 中。然后,在对一个愚蠢的错误的疯狂中,我做了不可思议的事情。在与 git commit --amend 合并后,我添加了 3 个字符来掌握。我改写了历史。然后,令我沮丧的是,它只影响了 master,而不是 bugfix,所以如果我 运行(在 master 上)git branch --no-merged 我看到 bugfix 没有合并。因此,我检查了错误修复并进行了相同的更改,使得 git diff bugfix master return 什么都没有,然后我再次从 master 那里检查了 git branch --no-merged,它仍然说错误修复没有合并。所以,现在我有 2 个相同的分支,我想将它们合并,但我不想使用另一个提交。我怎样才能将它们组合起来,以便 git 将它们视为已合并并且 git branch --no-merged 不会 return 错误修复?

有时候,当你在路上迷路时,最谨慎的做法是原路返回到之前没有迷路的地方。在你的情况下,我会撤消 master 中修改后的合并提交,并核对 bugfix 中的 "fix" 提交。然后在不做任何额外更改的情况下重做合并。

撤消错误修复中的错误提交:

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 来撤销错误的提交而不是重写历史。