Git 在同一主题分支上多次变基

Git Rebase multiple times on same topic branch

我有一个 Topic 分支,我不断地对其进行开发。有时我需要把内容放回 Main 分支。我第一次使用 rebase 进行合并(T1B,如图所示)。在那之后 TopicMain 分支都继续增长,在某个时候 T2 我想再次变基

问题来了,我想要的是将T1T2之间的提交一个一个应用到Main头,但是,git仍然尝试应用在 T0T2Main 之间提交。换句话说,git 不知道 T0T1 之间的提交已经被重新设置为 Main。这导致了许多不必要的冲突。

我通读了 git rebase 文档,但似乎没有一个参数可以指定计算 delta patches 的起点。所以我卡在了这一点上。

谁能帮帮我?

您混淆了 mergerebase

您已合并 T0 .. T1 到主分支,您没有将它们重新定位到主分支。你应该选择你的策略:始终变基或合并。

如果您将 T0..T1 重新设置在主分支上,您的图表将如下所示:

A main branch start
...
B <- main branch
T0'
...
T1' <- topic branch

即:线性历史!简短回顾:

  • merge 创建单个合并提交,每个分支的历史记录保持原样(如您的示例)
  • rebase 重写您的(主题)分支的历史。结果是线性历史。

阅读后寻找答案rebase doc

git rebase --onto main T1 T2

它计算 [T1, T2] 之间的增量并将它们一一应用到 main