簡體   English   中英

如何構造Git分支

[英]How to structure Git branches

我必須基於軟件供應商的現有源代碼設置git存儲庫來開發軟件。 源代碼會定期更新,我正在尋找最有效的方法,我想出了兩種工作模式,我很想聽聽您的意見,即哪種(或另一種)最有效情況。

總體而言,將有3個完全獨立的團隊,每個團隊都在各自獨立的代碼存儲庫中工作:A,B,C。

源代碼存儲庫/團隊A是基礎供應商代碼所在的位置。 源代碼存儲庫/團隊B是基於第三方的供應商代碼退出和擴展的地方。 我正在嘗試設置的源代碼存儲庫/團隊C,它應該基於A + B和我們自己的擴展。

每當存儲庫A發生更改時,來自團隊B的人員就會將其拉入其存儲庫中,進行集成並使其可用於團隊C。

B團隊也可以自行發布獨立發行版(A團隊不做任何更改),以供C團隊使用。

對於團隊C,我將設置存儲庫單獨的分支:

master
TeamA
TeamB
develop

分支TeamA和TeamB將由我們管理(團隊C)-每當我們從團隊A和B收到代碼並將它們合並到開發中時,我們都會自己更新它們。

目的是能夠了解我們在TeamA和TeamB之間的差異(開發)(以及TeamA和TeamB之間的差異),並且最容易地將團隊A和B的更改集成到開發中。

我想知道是否設置以下結構是否有任何區別:

1)使所有分支都基於母版

master
    TeamA
    TeamB
    develop

或2)遵循分支的父子結構

master
    TeamA
        TeamB
            develop

我想知道這是否有實際的區別。

過去有沒有人遇到過類似情況,您會推薦哪種方法?

在Git倉庫中,每個分支都是獨立工作的。 因此,您提供的兩個結構實際上與其他結構相同。 而且您的分支機構可以為您的團隊工作(團隊C)。

您還可以免除repoC中的TeamATeamB分支,從repoA和repoB中提取更改以直接develop分支:

git remote add -f teamA <URL for repoA>
git checkout develop
#Use git fetch teamA and git fetch teamB when there has new changes on repoA and repoB
git pull teamA/master --allow-unrelated-histories
git pull teamB/master --allow-unrelated-histories
#After making changes and commit changes on develop branch
git checkout master
git merge develop

注意:無論使用哪種分支結構,您都應該注意到合並沖突,因為三個存儲庫包含相同的文件/代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM