繁体   English   中英

Git从多个分支重新建立基础,未获得更改

[英]Git rebase from multiple branches not getting changes

在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

这导致合并,并且我解决了一些冲突,但是新的topicA中未出现对topicB的所有更改。

我也试过

git rebase --onto topicA master topicB

认为这将把主题B的更改应用于主题A,而master是共同的祖先,但这以我在主题B分支中的更改而告终。

在用topicB的更改为母版重新设置基础之后,我希望能够从母版中重新设置topicA的基础,以继续获取对topicA重要的文件的更改。

是否有可能从master分支,然后从也从master分支的另一个分支重新建立基础? 我使用rebase错误吗? 对于这个用例,合并会更好吗?

谢谢

更新 @VonC描述的rebase有效,现在我有了像这样的树:

                         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

但这是要我解决我已经解决的将主题A重新设置为基准并使它从M分支出来的冲突。如何在不处理我已经解决的所有冲突的情况下将主题A重新设置为主题B'O'?

rebase --onto应该使用topicA创建topicA的确切提交:

git rebase --onto topicB D topicA

请参见该示例以获取说明。

那会得到:

                         E'--H'--I'   topicA
                        /
                 K--L--M              topicB
                /  
A--B--C--D--F--J--N                   master

然后,是的,您可以将topicA设置为master

 git checkout topicA
 git rebase master

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM