2012-05-15 120 views
1

我正在開發一個項目,我們正試圖以最有效的方式使用git(對於我們),並決定爲2個子小組創建2個分支在主分支旁邊工作。git工作流與3個分支的建議

有時我們會承諾,如果它是通用的應該進入兩個分支,然後我們希望在其他分支的變化。

  1. 這應該是合併還是重新分配到其他兩個分支?

  2. 這是一個瘋狂的工作流程是走下去的路線嗎?如果是這樣,建議請!

回答

4

我沒有看到爲兩個團隊創建兩個分支的觀點。工作應根據其性質分開,而不是由誰來完成。

這是我建議:

  • 使用功能分支:你的大部分工作應該是對這些話題的分支,除了微小的提交(如錯別字等)。
    當您有功能,錯誤修復或應處理的故障單時:創建分支專長,並在那裏工作。
  • 使用開發,或釋放-X(其中X是釋放的號碼)分支:當功能的分支的工作已經完成,測試和工程,變基成開發
  • 千萬不要承諾主人,這個分支只能由首席開發人員,首席技術官,任何人重新設計。 Rebase dev的工作變成主人當你覺得它是需要的。

這是(基本上)我們如何在一個非常大的項目上工作。如果你的項目不大,你可以在沒有dev分支的情況下工作。

看看這篇着名的文章,顯示了一個相當不錯的工作流程:A successful Git branching model

+0

對不起,分支機構確實是功能分支。它恰巧每個都映射到一個子團隊。你的工作流程聽起來很有趣,而且我看過那篇博文。感謝您的建議 :-)。 – mattjgalloway

1

這取決於這些是否是共享一些常見的東西的2個獨立的項目;如果是這樣的話,建立一個單獨的庫並使用子模塊 - 而不是將所有東西都塞進一個回購站。

否則,我會建議反對描述的方法。這可能會導致這兩個分支之間的差異太大,合併它們可能變得幾乎不可能。由於git是一個分佈式系統,使所有的主要發展的主人,每個功能實現和經常合併按需創建分支。使用標記來標記重要的開發里程碑。

+0

這不是2個獨立的項目。當這兩個分支最終合併成主人時,這就是我擔心的事情。但是如果你想讓主人成爲一個穩定的分支,而另外兩個人正在實現特定的大型新部分呢? – mattjgalloway

+0

'master'是開發部門;這是所有新的時髦的東西(穩定!)上架。當你想要穩定時 - 然後你爲此創建分支(並在之前標記分流點)。爲什麼?因爲穩定意味着沒有新功能 - 只是修復。而這些分支通常不會偏離分支點。 Off master在開發過程中創建每個功能分支,並在返回主設備時合併它們。 –

1

逆向:

2)不,它不是一個瘋狂的工作流程。您的小組成員可能擁有自己的存儲庫和分支機構。當該小組具有穩定的產品時,他們將其推送到主存儲庫中的分支。然後,集成線索將採取主存儲庫中子分支的分支上的內容,並在適當的情況下合併/重新分配爲主分支(如您所說的要共享的內容)。

1)因此,假設在Tag-M1中,子組A和B都從主控制器分出,並且該子組A的工作現在回到了主控制器M2上。同時小組B已經移動到標籤-B2。你應該重新設置還是合併到分支-B上。我想你想避免重新啓用Tag-M2的分支B.你的子團隊B成員正在從分支B拉;當你重新綁定時,你將會改變分支B的歷史,這會使分組B的複雜化。

請注意,從主存儲庫更新時,您的小組可能更喜歡'git pull --rebase'。