原始分支合并到主分支后,如何从我的新分支中删除原始分支的提交?
How to remove original branch's commits from my new branch after the original branch has been merged to main?
假设我有一个 MR - 将 branch1
合并到 main
- 我从
branch1
签出一个新分支并将其命名为 branch2
。
branch2
依赖于 branch1
的变化,但对于它自己的分支来说已经足够大了。
branch1
的 MR 被合并到 main
。
- 我将
branch2
变基到 main
并注意到我的变基试图包含来自 branch1
的所有提交
我只是跳过这些提交吗?我是否在寻找 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。
假设我有一个 MR - 将 branch1
合并到 main
- 我从
branch1
签出一个新分支并将其命名为branch2
。 branch2
依赖于branch1
的变化,但对于它自己的分支来说已经足够大了。branch1
的 MR 被合并到main
。- 我将
branch2
变基到main
并注意到我的变基试图包含来自branch1
的所有提交
我只是跳过这些提交吗?我是否在寻找 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。