我有两个分支:feature1
和feature2
,它们基于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