原始分支合并到主分支后,如何从我的新分支中删除原始分支的提交?

How to remove original branch's commits from my new branch after the original branch has been merged to main?

假设我有一个 MR - 将 branch1 合并到 main

我只是跳过这些提交吗?我是否在寻找 rebase 以外的东西?很抱歉,如果有人问过这个问题 - 我试图找到答案,但我不确定搜索它的最佳方式。

I rebase branch2 onto main and notice my rebase is trying to include all the commits from branch1

那你rebase做错了。不幸的是你没有显示你使用的命令,但你可能说 git rebase main。那是错误的!正确的语法是:

git rebase --onto main branch1 branch2

这正是您想要的:它剪掉 branch2-only 提交的末尾并将它们推到 main.

的末尾

要理解为什么 你做错了,你需要认识到 Git 不会像你那样考虑分支。假设你有这个:

A -- B -- C -- D (main)
 \
  W -- X (branch1) -- Y -- Z (branch2)

您可能认为 branch2 只是 Y 和 Z。但是对于 Git,branch2 只是 Z 的单独名称。所以它必须决定在rebase开始的地方剪断,并且在没有其他信息的情况下,它将决定从W开始剪断。我给你展示的语法告诉它从 Y 开始剪辑。


然而,这并没有告诉您现在如何摆脱在您不正确的变基结果中出现的提交 W 和 X:

A -- B -- C -- D (main) -- W -- X -- Y -- Z (branch2)
                          [WRONG!]

答案是git rebase -i main。这是一个交互式变基,你可以从它给你的列表中删除 W 和 X。