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

一个洞

假设我有一个 MR - 合并branch1main

  • 我从中签出一个新分支branch1并调用它branch2
  • branch2依赖于branch1s 的变化,但对于它自己的分支来说已经足够大了。
  • MR forbranch1被 squash 合并到main.
  • 我变基branch2main注意到我的变基正试图包含来自branch1

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

马特

我将 branch2 重新设置到 main 上,并注意到我的 rebase 正在尝试包含来自 branch1 的所有提交

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

git rebase --onto main branch1 branch2

这正是您想要的:它剪断了仅分支 2 的提交,并将它们推到main.

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

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

你可能认为 branch2 只是 Y 和 Z。但是对于 Git,branch2 只是 Z 的一个名字。所以它必须决定在 rebase 开始时在哪里剪断,并且在没有其他信息的情况下,它将决定从 W 开始剪断。我向你展示的语法告诉它从 Y 开始剪断。


然而,这并没有告诉你现在该做什么摆脱在你不正确的 rebase 结果中出现的提交 W 和 X:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从主分支中删除单个合并的分支

如何从主分支合并分支?

是否从特定分支合并到主分支?

Git多个合并分支-如何在合并到主分支时避免多次提交

将本地分支合并为修改后的原始分支

Git:合并到生产主分支后如何测试

主分支更改后合并开发分支(已提交)

将压缩的提交从主分支合并到功能分支时避免 git 中的冲突

在原始/母版之前,如何将提交放入新分支?

如何知道我的本地分支合并到哪个远程分支

如何删除已经推送到原始位置的合并分支

本地合并和推送后,分支中的提交记录在主分支中

如果将父分支合并到主分支中,子分支会发生什么?

为什么我在Android Studio中的新分支会自动合并到以前的分支?

如何使从提交到合并的分支成为分支?

如何从合并分支分支的地方获得提交

如何在 Git 中合并工作分支和主分支?

如何从原始存储库中获取新分支?

压缩原始分支中的提交后如何重新设置基础?

将开发分支合并到我的fork中,同时保留合并到主fork的选项

如何从已删除的未合并分支中删除提交?

如何删除提交而不是合并的分支

git-从合并分支中删除提交

从多个合并分支中删除多个提交

是否有任何 git 选项可以自动将主分支的提交合并到功能分支?

Git基本 - 将旧分支合并到主分支

Git将主分支合并到其他分支

将分支合并到主分支的最安全方法?

如果分支从未合并到master中,删除该分支还会从仓库中删除其提交吗?