2012-10-05 154 views
0

Git新手的另一個noob問題。管理GIT分支

我有一個git repo,兩個開發人員在兩個不同的叉子上工作。他們的要求是每個人都應該能夠獨立工作,並且在一些變化之後都會產生一個拉動請求,我會將他們的工作合併到主要的回購中。當發生這種情況時,兩者都會從主要的回購倉庫(通過將其添加爲遠程倉儲)中進行更改並繼續處理最新的代碼。

我的問題 -

  1. 這是一個很好的方法可循?
  2. 我應該爲每個開發人員創建分支,並要求他們在自己的分支中進行提交,然後再合併到主控中? (看起來像我的開銷)
  3. 如果兩個開發人員都想訪問其他代碼(他們是否可以將其他分支添加爲遠程存儲庫,然後與其他代碼一起玩,然後嘗試推入主要的回購?它可能會產生衝突,是一個不好的做法..是什麼呢?)
              主要回購
                 /      \
    SUB1 < - >SUB2
    如果SUB1 SUB2增加了遠程回購和改變拉,後來嘗試創建爲主要回購拉動請求,就不會有衝突等問題,對不對?
  4. 任何其他方式來管理這些情況下的代碼?

獎勵:如何限制某些自由職業者/其他開發者可能臨時工作的完整代碼庫訪問權限? (更多的是從管理的角度而不是代碼)

+1

這似乎是合理的方法,儘管處理pull請求會更容易,如果它們是在它們自己的分支上開發的,而不是在master分支上開發的。不幸的是,限制對完整代碼庫的訪問的唯一方法是將事物分解成單獨的存儲庫,並且只能訪問這些存儲庫。 – R0MANARMY

+0

將某人的回購添加爲遠程回購並不好。這很混亂。一般實踐通過推送到主回購(遠程)來分享您的代碼。爲了使回購更加安全,您可以使分支(如** development **)在哪裏推動不穩定的更改。測試更改後,您可以將它們合併到**主**分支中。 –

回答

1
  1. 你圖中描述的關係是完全正確的方法。

  2. 問題2雖然你錯過了git的分佈式特性的一個點。我將嘗試描述最簡單的例子: 每個開發人員都應該擁有master分支的repo副本。當他們開發時,首選的方法是在所謂的特徵或主題分支中進行開發。即分支,致力於特定功能或錯誤修復或其他。這允許並行開發不同的功能。但是這些分支不需要在主線上共享,他們可以也應該保持本地化(儘管如果需要將它們推送到主線不會造成影響) 現在,如果他們想在不影響主線的情況下交換代碼,他們可以根據需要添加彼此的回購作爲遠程和追蹤其他分支。然後,當真正合並他們的努力,並推動它掌握其中一個人應該照顧它作爲一個集成者(或你)在git分支是非常輕量級的,你將開始更頻繁地使用分支,你將無法瞭解你以前如何在沒有分支的情況下工作。

另一種方法是在主線上有一個集成分支。這可能是主人,也可能是爲單一目的而維護的獨立分支。當有些部分是準備在開發方面,開發了本地回購切換到集成分支,拉最新變化和合並/變基他的話題分支,然後將其推回主線

  1. 在上述開發商描述的方案將只能訪問提交的代碼。但是,當然如果他們正在研究相同的代碼衝突是可能的。他們將不得不解決它們,這是任何VCS中的正常工作流程。這裏唯一的建議是,以確保你沒有衝突的大小不堪重負,因此,你應該使用基本策略,如:

一)提交往往 二)提交小塊是單一功能單元,請不要提交上百個文件。 c)更經常地集成

獎勵:您無法限制對回購部分的訪問,因此使用面向組件的方法並將事物分解爲不同的回購。這不僅可以實現精細的訪問管理,還可以減少集成的數量(因爲不是整個代碼庫都會受到影響,但是每次提交都會),而且還可以實施更好的設計。

+0

感謝@Eugene的詳細解答。 – pushkal