簡體   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