2012-11-20 66 views
5

我一直在努力的一個分支new_feature混帳保持單獨的分支同步

A -- B -- C -- D master 
     \ \ 
     \ 1 -- 2 -- 3 new_feature 
     \ 
     E -- F -- G port 

我們的代碼庫也有一個較舊的分支port其中另一個開發者移植了我們的產品到另一個RDBMS。 port尚未準備好合併回master

最近有必要讓new_feature工作在port。所以,我合併這兩個進入一個新的分支port/new_feature,並取得了一定的提交有(I,J)得到它的工作:

A -- B -- C -- D master 
     \ \ 
     \ 1 -- 2 -- 3 -- I* -- J* -- K new_feature 
     \    \ 
     E -- F -- G -- H -- I -- J -- K* port/new_feature 
        port 

我精挑細選I和J回new_feature(如I *,J * ),因爲它們涉及重要的重構,我想在new_feature也有。我也一直在向new_feature提交新的提交(K),需要將其提交到port/new_feature(K *)。

展望未來,有什麼保持同步new_featureport/new_feature但只針對新的變化)的最佳方案?我應該從一個到另一個保持挑選承諾(反之亦然)?還是有一種方便的方式來合併做到這一點?

回答

1

挑肥揀瘦是危險的,因爲的:

  • 重複提交(上接合並將是複雜,因爲Git會嘗試重新申請I-J-K之上...... I-J-K)。
    如果您將一個分支重新綁定到另一個分支(參見「Git cherry pick and datamodel integrity」),情況就不會如此,但在您的情況下這是不可能的。

  • 函數依賴(見「How to merge a specific commit in git」),但我懷疑它是不是在你的情況的問題:IJ不依賴於H,可以安全地應用於3

如果您不打算將端口和新功能合併在一起,選櫻桃很方便。
如果是這樣,請繼續櫻桃採摘。

+0

我想理想地看到所有分支合併在一起。但只要我繼續處理我的功能,並且主控和端口仍然未被合併,我認爲將new_feature和port/new_feature作爲單獨的分支是有意義的。感謝關於櫻桃採摘的好處 - 我期待着這一天,只有在主人身上:-) – antinome