来自多个分支的Git rebase未获得更改
从主分支中,我为一个项目创建了一个分支“topicA”,它只是原始文件的一个子集,添加了一些新文件。为此,我创建了分支,删除了不需要的文件,添加了一些新文件并提交 然后我创建了一个功能分支“topicB”,并做了一些更改来自多个分支的Git rebase未获得更改,git,version-control,merge,branch,branching-and-merging,Git,Version Control,Merge,Branch,Branching And Merging,从主分支中,我为一个项目创建了一个分支“topicA”,它只是原始文件的一个子集,添加了一些新文件。为此,我创建了分支,删除了不需要的文件,添加了一些新文件并提交 然后我创建了一个功能分支“topicB”,并做了一些更改 E--H--I topicA / / K--L--M topicB / / A--B--C--D--F--J--N master 我希望“
E--H--I topicA
/
/ K--L--M topicB
/ /
A--B--C--D--F--J--N master
我希望“topicB”中的更改适用于“topicA”。生成的树如下所示:
E--H--I topicA
/
K--L--M topicB
/
A--B--C--D--F--J--N master
我一直在尝试使用rebase来实现这一点,但未能获得预期的结果
git checkout topicA
git rebase topicB
这导致了一个合并,我解决了一些冲突,但并非来自topicB的所有更改都出现在新的topicA中
我也试过了
git rebase --onto topicA master topicB
我认为这将把topicB的变更应用到topicA,master是共同的祖先,但最终我在topicB分支中进行了变更
在我使用topicB的更改重新设置master的基础后,我希望能够从master重新设置topicA的基础,以继续获得对topicA重要的文件的更改
是否可以从主节点分支,然后从另一个也从主节点分支的分支重新基址?
我是否使用了rebase错误?
合并对于这个用例会更好吗
谢谢
更新
@VonC描述的重基工作正常,现在我有了一棵树:
E--H--I topicA
/
K--L--M--O topicB
/
A--B--C--D--F--J--N master
当我再次尝试从topicB重新设置topicA的基础以获得新的更改时,我运行了
git checkout topicA
git rebase topicB
但它要求我解决我已经决定重新设置topicA的基础并将其从M分支出来的冲突。如何将topicA的基础重新设置为topicB'O',而不处理我已经解决的所有冲突?重新设置基础--to
应该使用创建topicA
的确切提交:
git rebase --onto topicB D topicA
有关说明,请参见
这将得到:
E'--H'--I' topicA
/
K--L--M topicB
/
A--B--C--D--F--J--N master
然后,是的,您可以在master
的基础上重新设置topicA
:
git checkout topicA
git rebase master
那么您应该已经激活(并且仍然可以)
git-rere
:并且