Git 将历史调整重基应用于另一个分支

Git 将历史调整重基应用于另一个分支,git,git-branch,git-rebase,Git,Git Branch,Git Rebase,假设我有一个git分支b1和一个基于它的分支b2: b1: c0 -> c1 -> c2 \ \ b2: c3 -> c4 现在,我已经在b1中执行了一个重基,它将c1和c2更改为c1'和c2'。现在,如果我在b1上重新设置b2的基址,就好像我正在尝试获取c0->c1->c2->c1'->c2'->c3->c4;而实际上,我只想用c1'替换c1,用c2'替换c2,在b2上,就像

假设我有一个git分支
b1
和一个基于它的分支
b2

b1: c0 -> c1 -> c2
                 \
                  \
b2:                c3 -> c4
现在,我已经在
b1
中执行了一个重基,它将
c1
c2
更改为c1'和
c2'
。现在,如果我在
b1
上重新设置
b2
的基址,就好像我正在尝试获取
c0->c1->c2->c1'->c2'->c3->c4
;而实际上,我只想用
c1'
替换
c1
,用
c2'
替换
c2
,在
b2
上,就像在
c1
中一样


我应该如何正确地进行替换?

在第一次重基后,树的外观如下所示:

b1: c0 -> c1' -> c2'
       \            
        \
b2:       c1  -> c2 -> c3 -> c4
现在应该清楚该怎么做了:

  • git签出b2
  • git-rebase-ib1
    让一个编辑器提出rebase的预期操作
  • 现在将
    c1
    c2
    pick
    行替换为
    drop

  • 在rebase编辑器中,您将不会看到
    c1'
    c2'
    ,因为假定这些都是必须保留的;这只是你的分支机构的提交——比如它们在第一次重新基址之后的提交。

    我觉得这个问题很难理解。我假设您想跳过c3之前的所有提交。可以这样做:

    git rebase --onto b1 c3^ b2