Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自多个分支的Git rebase未获得更改_Git_Version Control_Merge_Branch_Branching And Merging - Fatal编程技术网

来自多个分支的Git rebase未获得更改

来自多个分支的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 我希望“

从主分支中,我为一个项目创建了一个分支“topicA”,它只是原始文件的一个子集,添加了一些新文件。为此,我创建了分支,删除了不需要的文件,添加了一些新文件并提交

然后我创建了一个功能分支“topicB”,并做了一些更改

             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
:并且