【问题标题】:Git Rebase multiple times on same topic branchGit Rebase 在同一主题分支上多次
【发布时间】:2021-06-28 02:39:16
【问题描述】:

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

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

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

谁能帮帮我?

【问题讨论】:

    标签: git merge rebase


    【解决方案1】:

    您混淆了mergerebase

    你已经合并 T0 .. T1 到主分支,你还没有将它们重新定位到主分支。你应该选择你的策略:rebase 或 merge always。

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

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

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

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

    【讨论】:

    • 也许我的图表引起了一些误解。 T1Brebase,我省略了 T0',... T1' 到单个 B 以简化图表
    【解决方案2】:

    看完rebase doc找到答案

    git rebase --onto main T1 T2
    

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

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 2016-03-25
      • 2021-08-20
      • 2017-02-21
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2021-08-18
      • 2012-09-05
      相关资源
      最近更新 更多