28

假设我正在开发一个分支中的功能oldFeature。我已经完成了提交A并将B1其发送给代码审查。在B1我更改了一些现有文件但也添加了newfile.txt.

与此同时,我开始在一个分支newFeatureoldFeature== HEADB1分支工作。我添加了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依赖它。

我知道我可以执行以下解决方法:

那么我会有这样的情况:

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。

4

1 回答 1

24

你可以做一个变基交互

git checkout new_feature
git rebase --interactive old_feature

和 drop B1:您只需删除带有 B1 的行:

# If you remove a line here THAT COMMIT WILL BE LOST
于 2013-01-29T18:55:35.643 回答