2012-02-14 129 views
1

我正在與一箇中等規模的團隊合作開發Web應用程序。我們正在使用Git進行版本控制/共同編寫此項目。在我的同事和我之間,我認爲我們即將遇到困難的合併,我想看看在遇到麻煩之前我們能做得更好。如何避免合併與多分支合併衝突?

我們主要是在Git中工作的發展分支:

D-E-F-G 

我的同事創建了一個分支上的一個大的變化工作:

 A 
    /
D-E-F-G 

然後我把該分支下,修正了一些錯誤在裏面,我即將把它合併的同時,我的同事開始了的其他特徵的新的分支:

 A-B-C-D 
    /
D-E-F-G-H-I-J 
     \ 
     A-B-C 

現在,我需要創建一個新功能,使用來自同事新分支的樣式,但是他的新分支需要更多工作才能合併回開發中,因此我將分支從分支中分支出來利用他的風格,並有當他的東西被合併回來洽看:

 A-B-C-D 
    /
D-E-F-G-H-I-J 
     \ 
     A-B-C.. 
      \ 
      A 

但是,我們確實也需要一定的他在他的其他分支開發的風格,所以我想重訂基期的發展一旦我們將他的另一個分支合併到開發中,就立即進入我的分支:

 branch 1: A-B-C-D 
      /  \ 
develop: D-E-F-G-H-I-J.. 
       \  \ 
     branch 2: A-B-C..\ 
         \ \ 
       branch 3: A-B.. 

這樣,我需要處理的分支將有我需要從他的兩個分支機構獲得e代碼,但將從開發中重新啓動以有希望減少衝突。我擔心的是,當他試圖將分支2合併到開發中時,他可能遇到很多問題。他會有很多衝突嗎?有什麼更好的,我們可以做?

回答

2

對於這個答案,我會假設你的說明了兩兩件事:

  • develop是準備部署的分支,它可以接收錯誤修正提交,並部署(或釋放)任何時間(如果你不不要這樣做,我強烈建議你這樣做:P)。
  • 您只有兩位開發人員開發功能。所以,你不會在develop分支上有重要的功能。

所以,我建議你創建一個名爲feature-integration分支,是重建基礎與develop每天(或當你對develop分支的變化)。然後,當你的同事完成他的大部分工作時,他可以將他的代碼合併到feature-integration分支中,並且可以將其用於開發重定向feature-integration上的工作分支上。你(以及你的同事)也應該保留你的工作分支代碼重新定期(我建議每天或至少每週)與feature-integration基礎上保持你的代碼更新,並在開發過程中解決一些最終的衝突,所以你不應該當你決定合併到develop時,會產生一個痛苦的合併。

0

您遇到的問題是通過合併您引入您想要的更改以及您不想要的更改。

使您的功能更小。

從一個共同點開始你的功能 - 不管它起初有多笨拙。

使用rerere使沉浸變得更容易。

這是在我的分支每個功能後總結:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/