2017-10-16 167 views
2

我經常與一個系列分支最終建成一個從另一個這樣的:調整基線一個系列分支爲平行分行

...-(M) 
    | 
    +-A 
     | 
     +-B 
     | 
     +-C 
爲每個A,B和C.

的拉請求

一般

問題是,如果我向C請求一個Pull請求,它將包含在分支A和B中所做的所有更改,這些更改只會激怒人們。

我想重新構造圖,使得它看起來像:

...-(M) 
    | 
    +-A 
    | 
    +-B 
    | 
    +-C 

但每次我試圖變基或者「B」或「C」到「(M)」的結構保持一樣。

什麼是重構這個的正確方法?

順便說一下,我使用SourceTree來處理所有與Git相關的需求,但如果需要,我很樂意從控制檯指令進行翻譯。

編輯:VonC建議的解決方案確實有效,但當我使用SourceTree的Git內置版本時,它不適用於我。從這裏下載便攜版本後:https://github.com/git-for-windows/git/releases/tag/v2.14.2.windows.3它工作正常。

回答

1

不涉及所有以前的提交是rebase --onto命令。

git checkout C 
git rebase --onto M B C 

這意味着:變基 B之後一切(B除外)直至C(C包括)到M.

git checkout B 
git rebase --onto M A B 

注:對於時,最好使用的git bashlatest Git for Windows(如PortableGit-2.14.2.3-64-bit.7z.exe解壓到任何你想要的地方)。這樣可以避免像「當前分支沒有跟蹤信息,請指定你想要分支的分支」這樣的怪異錯誤。那I mentionned here
A rebase是本地操作,不應該關注遠程分支。

+0

謝謝你VonC。我一直在嘗試非常類似於以下這篇文章:https://makandracards.com/makandra/10173-git-how-to-rebase-your-feature-branch-from-one-branch-to-other 但是,鏈接的示例(帶有2個參數)和示例(帶有3個參數)都會給出錯誤消息:「當前分支沒有跟蹤信息,請指定要對其分支的分支。」我正在努力理解這意味着什麼。 – Slartibartfast

+0

@Slartibartfast奇怪的是,這應該涉及本地分支:不需要遠程跟蹤分支。但是,如果你必須:https://stackoverflow.com/a/32729663/6309 – VonC

+0

@Slartibartfast順便說一句,你使用哪個Git版本,在哪個操作系統上? Git分支-v顯示A,B和C嗎? – VonC