我如何变基和保留合并以及进行挤压/修复



当负责清理长时间运行的功能分支时,我发现历史记录中有许多提交需要压缩/修复或重写。我确实想保留合并,因为它们可能有我无法做到的复杂冲突解决方案。

想象一下以下提交:

master: P0 - P1 - P2 - P3 --------------
                              
feature:  A - M1 - B - C1 - C2 - C3 - D - M2 - E

其中M是来自同一分支(主)2 的合并。

我想修复C2C3C1(并说改写C1)。

当我这样做时:git rebase -i -r master我看到所有提交和合并,并根据需要用fr标记它们。

当执行此变基时,并且我到达合并提交M2,git 会抱怨冲突。我假设是因为它无法应用合并,因为由于修复而重写了提交。

有没有办法让 git 在没有冲突的情况下进行这样的合并?鉴于我没有更改任何内容行,在这种情况下,ourstheirs总是正确的,以及在运行此变基的过程中我将如何做到这一点。

如果一般来说,您要做的是将所有更改压缩为一个更改,并在您开始的分支之上重新变基......我这样做没有像这样所有的变基麻烦:

git checkout my-branch
git merge the-target-branch
# finish that merge, doesn't matter the comment, it will go away
# when the merge is finished
git reset --soft the-target-branch
git commit -m "my squashed feature"

你甚至没有注意到地重新定位/挤压

最新更新