Git变基后出现中间冗余提交如何解决?实现A'->B'分支结构
问题描述
我有一条分支结构为A->B:
- 提交A中,误将原字符串
Foo多加了一个字符,变成Fooo; - 提交B中,又移除了多余的
o(即Fooo -> Foo)。
由于提交A和B的核心目的是新增文件,我希望消除Foo相关的无效变更。
我修改了提交A中的多余o后,执行git commit --amend得到新提交A',期望把分支调整为A'->B'。操作步骤如下:
git checkout B git rebase -i A'
弹出的编辑文件显示类似pick:B的内容,我未做任何修改。本以为需要解决冲突,但执行git rebase --continue后变基直接完成,最终分支结构变成了A'->A''->B':提交A''重新添加了我在A'中移除的多余o,随后提交B'又将其移除。请问该如何消除Foo相关的无效变更?
解决方法
我找到了两种可行的方案:
交互式变基删除冗余提交行
变基时弹出的编辑文件实际内容为:pick:A pick:B删除
pick:A这一行后完成变基,就能直接得到A'->B'的干净分支结构,彻底消除Foo相关的无效变更。合并冗余提交
将A''和B'这两个提交合并为一个,也能消除中间的无效变更。执行git rebase -i A'进入交互式变基,把B对应的pick改为squash(保留提交信息)或fixup(丢弃提交信息),完成变基后就能得到简洁的提交历史。
内容的提问来源于stack exchange,提问作者Wayne Tseng
相关产品推荐
相关产品推荐

