Git 在两个分支之间来回变基

Git rebase back and forth between two branches

首先我有以下3个分支。

1---2 (A)
    |\
    | 3 (B)
     \
      4 (C)

为了将 (C) 变基到 (B),我这样做:

git checkout C
git rebase B

结果是:

1---2 (A)
     \
      3 (B)
       \
        4 (C)

假设我在 (C) 中做了一些事情,所以我有:

1---2 (A)
     \
      3 (B)
       \
        4---5 (C)

现在我想将 (C) 重新设置为 (A),所以我会:

1---2 (A)
    |\
    | 3 (B)
     \
      4---5 (C)

你是怎么做到的?

在最后一步中,您不想执行标准变基,因为您想从 C 的历史记录中删除 3。在这种情况下,您可以使用交互式变基:

git checkout C
git rebase -i A

在生成的编辑器中 window 找到提交行 3,将其删除,保存文件并关闭编辑器。 git 然后将 45 变基到 A (2) 而忽略 3.