2011-04-05 54 views
1

如果一組8人正在開展項目,是否需要爲所有成員分別設立分支機構?Git master回購分行

如果是這樣

  1. 怎樣一個分支主回購。
  2. 分支之間合併會發生什麼?
  3. 每位會員將如何從團隊的其他成員獲取最新代碼?

如果每個成員都在同一個回購站上工作,但仍然在他們的單個文件上,那麼是否有單個分支會導致更多問題?

回答

2

這很大程度上取決於您的開發風格,您是否有責任人來合併每個人的工作並使事情正確,或者如果您在開發人員中分發這些內容。

因爲每個克隆本質上都是它自己的回購,所以你所有的開發人員都會得到一個「分支」,這是他們的克隆中的一個。如果他們想要,他們可以進一步分支,但是當他們推動時,他們將(默認情況下)必須確保他們的變化與中央存儲庫上的任何更改(如果使用一箇中央存儲庫作爲霸王)是線性的。

至於你的問題:

1)如果你有一箇中央裸露共享回購你可以做「混帳分支」要求內它來創建分支。或者,每個開發人員都可以在主人的克隆中創建一個分支,然後將該分支向上推以創建它。

2)分支之間的合併非常簡單。如果存在衝突,則開發人員必須在合併期間更正這些衝突,然後將顯示爲合併提交。如果沒有衝突,那麼合併將僅顯示爲被添加到分支的一系列提交。

3)如果使用中央存儲庫設置,每個成員將定期從回購中「拉」。任何新創建的分支機構或對現有分支機構的任何更新都將與該分支機構一起提供,以便他們確保擁有最新(共享)的數據。否則,一位開發人員可能會要求另一位開發人員直接從他們的工作回購中獲取有關協作代碼的信息。

在我看來,除非您有人專門負責將每個開發人員的更改合併到生產分支(或主人)中,否則每個開發人員在共享回購中擁有明確的單個分支可能會比您想要的更復雜。只要確保每個開發人員知道在他們試圖推動他們的變更並重新測試他們的變化(如果共享回購中有任何變化)之前就知道要提取(--rebase)。

+0

謝謝。我認爲現在比現在需要更麻煩。 – jarryd 2011-04-05 16:28:53

+1

有幾件事情你可能想要在你的回答中更正:1.「必須確保它們的變化與中央資料庫中的任何變化是線性的」< - 線性不是必需的,只是(如果推不是強制的),遠程ref是你推動的提交的祖先。 2.「如果有衝突,那麼它將顯示爲合併提交,如果沒有衝突,則合併將顯示爲一系列提交到分支的提交。」 < - 這是不正確的 - 只要有多個父項,就會出現合併提交,除非使用了--no-ff ... – 2011-04-05 19:26:12

+0

... 3.「每個成員將定期執行」pull「操作從任何新的分支創建的任何新的分支或對現有分支的任何更新都會隨之提供,這樣他們就可以確保擁有最新(共享)的數據「< - 更微妙的一點,但是如果特定分支用一個git pull,遠程跟蹤分支將不會被更新 - 'git fetch remote-name'是最安全的方法。 – 2011-04-05 19:28:25

1

我說有一個主分支,一個開發分支,然後各功能和修復分支,而不是團隊成員。考慮你將如何部署和管理代碼,以找到最佳的回購管理策略。與8人,你可能會有很多提交。如果你需要從兩週後排序一些代碼,將會更容易計算出「Evan寫這個,所以它會在evan分支」或「這是斷菜單項,所以它在fix_menu分支」。當跟蹤某些東西並找到分支時,您需要找到提交併按照合併進行。如果另一個人介入協助某項功能會怎麼樣?

  1. 理想的主分支總是生產值得,所以你不希望人們直接合並他們的變化。因此發展分支。一個人的代碼在寫入時可能會像魅力一樣工作,但在集成時會遇到問題。開發分支(如分段/開發服務器)是發現這些問題的地方,儘可能讓主人儘可能純潔。

  2. 合併是非常簡單的。當被合併的兩個提交中相同的代碼塊不同時只有衝突。在繼續合併之前,Git會標記並使您能夠理清衝突。

  3. Git使用推/拉來發送和搶犯。如果您的目標有新的更改,您可以將更改推送出去,git會提醒您。拉實際上是兩個操作 - 取和合並。 Fetch說讓我把這個分支的最新版本或最新的所有分支從遠程回購。 Fetch不會觸及您當前的分支,因此它很安全。拉都將獲取最新的,然後嘗試將其合併到您當前的分支。

您還可以設置跟蹤分支。 git branch --track <newbranch> origin/develop通過這種方式,人們可以分離出一個功能分支,同時能夠輕鬆地引入在開發分支上進行的更新。

另一個好的建議是習慣於看提交日誌可視化,讓你知道不同的場景是如何出現......當三個開發商都在同一分支上工作,它看起來這樣...合併使得即行看起來像這樣。

如果你的團隊是新的Git,我就開始了與單個回購維護者。如果每個人都在學習,事情會變得很快。讓一個人管理主分支。溝通分支並關注發展。作爲下一步,通過擠壓來練習重新鑲嵌。請記住,所有提交都將存在於分支的線性歷史記錄中 - 因此,當您將特性分支合併到開發中時,所有那些毫無用處的「正在進行中」提交將會使開發時間表雜亂無章。擠壓然後合併保持歷史清潔(並且有助於防止回滾到不完整的狀態)。