说我正在处理分支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
的基数,使其具有B2
而不是B1
。当我简单地进行基准时,由于在基准的两个部分中都添加了newfile.txt
,所以我已经对基准进行了冲突。
我想保留oldFeature
(B2
)的版本。
我无法将B1
移至HEAD
,因为C
,D
,E
依赖于它。
我知道我可以执行以下解决方法:
git checkout --theirs
git checkout --theirs
然后我将遇到这样的情况:
git add
其中newFeature oldFeature
A A
B2 B2
BX
C
D
E
在BX
中存在的文件上或多或少是B2\B1
。现在,我可以进行交互式变基并删除A
。
但是我的解决方法有些复杂。有更简单的方法吗?简单来说,我要么有
BX
没有任何基准冲突,然后我可以摆脱该newFeature oldFeature
A A
B2 B2
B2\B1
C
D
E
提交,或者自动替换它们,以便得到
B2\B1
使用Git 1.8.0。
您可以进行newFeature oldFeature
A A
B2 B2
C
D
E
:
rebase interactive
并删除git checkout new_feature
git rebase --interactive old_feature
:您只需用B1删除行:
B1