我对gits rebase -onto功能有一个问题。
我的问题与此处描述的问题非常相似
该页面的作者具有分支历史记录:
master ---A---B---C
feature1 D---E---F
feature2 G---H
,并希望将两个分支都重现到主人上,以使分支历史记录看起来像:
master ---A---B---C
feature1 D'--E'--F'
feature2 G'--H'
这是可以通过命令的链接文章中所述实现的:
git rebase --onto feature1 feature1@{1} feature2
我也有类似的问题,但是我有两个两个依赖性特征分支而不是一个。
我目前的分支历史如下:
master ---A---B---C
intermediate D---E---F
feature1 G---H
feature2 I---J
我想知道是否有可能执行重新构想,以使我的历史转变为:
master ---A---B---C
intermediate D'---E'---F'
feature1 G'---H'
feature2 I'---J'
我可以同时执行两个分支的依赖性重牌吗?
如果是这样,这种操作的语法是什么?
事先感谢您的任何回复!!
git rebase分支,所有父分支(或依赖的子分支)使您接近,但问题略有不同。链接的问题具有一个完整包含所有其他分支的顶级分支。
对于您的用例,您必须在分支之后手动重新分支:
git rebase master intermediate
git rebase intermediate feature1
git rebase "G'" feature2
git通常足够聪明,可以弄清楚何时两个提交包含相同的补丁并跳过这些提交。这可以通过--reapply-cherry-picks
选项控制。
如果这对您不起作用,则可以在运行git rebase
时完全明确说明您要重新列出哪个提交范围以及要将其重新置于以下位置:
git rebase --onto master master intermediate
git rebase --onto intermediate E feature1
git rebase --onto "G'" G feature2
这很麻烦,但应在100%的情况下工作。