假设我正在开发一个分支中的功能oldFeature。我已经完成了提交A并将B1其发送给代码审查。在B1我更改了一些现有文件但也添加了newfile.txt.
与此同时,我开始在一个分支newFeature(oldFeature== HEAD)B1分支工作。我添加了C, D, E.
同时,我得到了代码审查结果,不得不修改B1、更改newfile.txt和更改一些现有文件。修复后就变成了B2。
所以为了说明它:
newFeature oldFeature
A A
B1 B2 [B1 with some fixes]
C
D
E
现在我进去了newFeature,我想重新设置newFeature为 haveB2而不是B1. 当我简单地进行变基时,由于在newfile.txt变基的两个部分中都添加了基准,所以我有一个冲突。
我想保留oldFeature( B2) 中的版本。
我不能移到B1,HEAD因为C, D,E依赖它。
我知道我可以执行以下解决方法:
git checkout --theirsgit add- 继续变基
那么我会有这样的情况:
newFeature oldFeature
A A
B2 B2
BX
C
D
E
whereBX或多或少B2\B1存在于A. 现在我可以进行交互式 rebase 和 remove BX。
但是我的解决方法有点复杂。有没有更简单的方法来做到这一点?更简单的意思是,我要么有
newFeature oldFeature
A A
B2 B2
B2\B1
C
D
E
没有任何变基冲突,然后我可以摆脱那个B2\B1提交,或者自动替换它们所以我得到
newFeature oldFeature
A A
B2 B2
C
D
E
使用 Git 1.8.0。