在清理长期运行的功能分支的任务时,我发现历史记录中有很多提交需要压缩/修复或重新编写。我确实要保留合并,因为它们可能具有无法解决的复杂冲突解决方案。
想象一下以下提交:
master: P0 - P1 - P2 - P3 --------------
\ \ \
feature: A - M1 - B - C1 - C2 - C3 - D - M2 - E
M
是来自同一分支(主)2的合并。
我想将C2
和C3
修正为C1
(并说出改写C1
)。
当我这样做时:
git rebase -i -r master
我看到了所有提交和合并,并根据需要用f
和r
标记了它们。
执行此基准更改后,当我到达合并提交M2
时,git会抱怨冲突。我认为是因为由于修订导致提交被重写,所以无法应用合并。
有没有办法使git进行这样的合并而不会发生冲突?鉴于我没有更改任何内容,在这种情况下,ours
或theirs
总是正确的,在运行此基准库的过程中我将如何做。
答案 0 :(得分:-1)
如果总的来说,您想要做的就是将所有更改都压缩到一个更改中,并在您从其开始的分支之上重新建立基础。...我这样做不会像这样麻烦所有重新构建基础:
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"
您在没有察觉的情况下重新定位/压扁