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