如何在Git rebase中用另一个替换提交?

问题描述 投票:20回答:1

说我正在处理分支oldFeature中的功能。我已经完成了AB1的提交,并将其发送给代码审查。在B1中,我更改了一些现有文件,但还添加了newfile.txt

[与此同时,我开始在分支newFeature中工作,该分支是从oldFeature分叉的(HEAD == B1)。我添加了CDE

同时,我得到了代码审查结果,不得不修改B1,更改newfile.txt,还更改了一些现有文件。修复之后,它变成B2

因此说明:

newFeature   oldFeature
A             A
B1            B2 [B1 with some fixes]
C
D
E

现在我在newFeature中,我想重新设置newFeature的基数,使其具有B2而不是B1。当我简单地进行基准时,由于在基准的两个部分中都添加了newfile.txt,所以我已经对基准进行了冲突。

我想保留oldFeatureB2)的版本。

我无法将B1移至HEAD,因为CDE依赖于它。

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

然后我将遇到这样的情况:

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。

git git-rebase
1个回答
17
投票

您可以进行newFeature oldFeature A A B2 B2 C D E

rebase interactive

并删除git checkout new_feature git rebase --interactive old_feature :您只需用B1删除行:

B1
© www.soinside.com 2019 - 2024. All rights reserved.