如何将Bug修复提交压缩到合并提交以修正合并中的Bug
解决方法
直接用以下几步就能搞定,不用重新解决冲突:
先定位合并提交的哈希值
执行git log --oneline,找到那条合并提交的记录,记下它的哈希(比如def456),修复提交就是它紧跟的下一条记录。重置到合并提交,保留修复修改
执行命令:git reset --soft def456这一步不会丢失任何修改,只是把HEAD指针移回合并提交节点,修复提交的所有内容会保留在暂存区中。
将修复内容合并到合并提交
执行命令:git commit --amend此时会弹出编辑器,你可以直接保留原合并提交的信息,保存退出即可。
完成后,你的提交历史里只会剩下包含修复内容的合并提交,原修复提交会被彻底移除,完全看不出曾经出现过Bug。
如果你更习惯用交互式变基,也可以按以下操作:
- 执行
git rebase -i --rebase-merges HEAD~2(假设合并提交是倒数第二个提交) - 在弹出的编辑器中,把修复提交那行的
pick改成squash(会让你编辑合并后的提交信息)或fixup(直接沿用合并提交的信息) - 保存退出后按提示完成操作即可
注意:因为修改了本地提交历史,若之后需要推送到远程仓库,需使用git push --force,但你目前只有本地修改,无需考虑这一步。
内容的提问来源于stack exchange,提问作者Jakub Znamenáček
相关产品推荐
相关产品推荐

