gpt4 book ai didi

git - 为什么我不能对 merge 的主题分支进行 rebase ?

转载 作者:太空狗 更新时间:2023-10-29 14:06:35 25 4
gpt4 key购买 nike

说,我的 git repo 中有这种情况

A--B--C--D   master
|\
| E--F topic
|
\
G--H other

我想将 topic rebase 到 other 分支。这适用于:

git rebase --onto other master topic

这给了我

A--B--C--D   master
|
\
G--H other
\
E--F topic

但是如果 topic 已经 merge 到 master (git merge topic) 上面的 rebase 命令就不再起作用了。如果我尝试一下,我似乎会得到这样的结果:

A--B--C--D--M  master
|\ /
| E--F----
|
\
G--H other / topic

而我想要的是:

A--B--C--D--M  master
|\ /
| E--F----
|
\
G--H other
\
E'--F' topic

为什么会这样,我如何将 topic rebase 到 other,即使它已经 merge 到 master

编辑:更新底部图表以明确,EF 不是相同的提交 - 但引入相同的变更集。

编辑 2:我真正想要的是,就好像我首先创建了一个 topic 的副本(比如 topic-rebased),我将其 rebase 为 other before 然后我将 topic merge 到 other 中:

git checkout topic
git checkout -b topic-rebased
git rebase --onto other master topic-rebased
git checkout master
git merge topic

这很好用。但是如果主题已经 merge 到 master 中,rebase 就不再起作用了。

最佳答案

您不能期望每个 EF 提交都存在于您的存储库中。如果他们有不同的 parent (他们这样做:一组有 A 作为 parent ,另一组有 H 作为 parent ),那么一个 E 将与另一个不同的 E

在你的情况下,如果你想要这个结果,你应该查看 cherry-picking :

git checkout topic   # puts you on `H`
git cherry-pick E
git cherry-pick F

这会将提交 EF 应用到您当前的分支中,并实质上创建它的副本。因此,您最终应该会得到想要的结果。

关于git - 为什么我不能对 merge 的主题分支进行 rebase ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com