仅将来自新分支的更改应用到旧分支上



我有两个分支:feature1feature2,它们基于develop分支。feature1是基于旧的提交,而feature2是最近的。

我只想从feature2中获得未开发到feature1的提交。

我尝试git rebase --onto feature1 develop feature2在这个答案中建议,但我看到,从开发提交仍然被应用到feature1。我遗漏了什么?

Update:结果是本地develop分支与远程develop没有更新,而feature2是基于远程develop上最近的提交。这就是为什么来自远程develop的提交会被重基的原因。

正如knittl在评论中提到的,git rebase --onto A B C总是采用B..C(即^B C)的提交范围

这意味着它应该针对从D(排除)到f2的提交(这些提交都不应该来自develop,可以从develop访问):

f2--f2 (feature2)
/
--d--d--D--d (develop)

f1--f1 (feature1)
git rebase --onto feature1 develop feature2
--d--d--D--d (develop)

f1--f1 (feature1)

f2'--f2' (feature2)

feature1之前被合并到feature2,没有删除feature1分支。

:

f1--f1--f1--f1     (feature1)   
/          
/        f2--f2--f2  (feature2)  
/        /
--d--d--d--d--d             (develop)

然而,OP补充道:

我的本地develop分支与远程开发没有更新,而其他分支是最新的。
这就是为什么远程开发的提交会被重基

:

gi fetch
git switch feature1
git rebase --onto feature1 origin/develop feature2

最新更新