Git 在同一主题分支上多次变基
Git Rebase multiple times on same topic branch
我有一个 Topic
分支,我不断地对其进行开发。有时我需要把内容放回 Main
分支。我第一次使用 rebase
进行合并(T1
到 B
,如图所示)。在那之后 Topic
和 Main
分支都继续增长,在某个时候 T2
我想再次变基
问题来了,我想要的是将T1
和T2
之间的提交一个一个应用到Main
头,但是,git仍然尝试应用在 T0
到 T2
到 Main
之间提交。换句话说,git 不知道 T0
和 T1
之间的提交已经被重新设置为 Main
。这导致了许多不必要的冲突。
我通读了 git rebase 文档,但似乎没有一个参数可以指定计算 delta patches
的起点。所以我卡在了这一点上。
谁能帮帮我?
您混淆了 merge
和 rebase
。
您已合并 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
。
我有一个 Topic
分支,我不断地对其进行开发。有时我需要把内容放回 Main
分支。我第一次使用 rebase
进行合并(T1
到 B
,如图所示)。在那之后 Topic
和 Main
分支都继续增长,在某个时候 T2
我想再次变基
问题来了,我想要的是将T1
和T2
之间的提交一个一个应用到Main
头,但是,git仍然尝试应用在 T0
到 T2
到 Main
之间提交。换句话说,git 不知道 T0
和 T1
之间的提交已经被重新设置为 Main
。这导致了许多不必要的冲突。
我通读了 git rebase 文档,但似乎没有一个参数可以指定计算 delta patches
的起点。所以我卡在了这一点上。
谁能帮帮我?
您混淆了 merge
和 rebase
。
您已合并 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
。