0

我必须设置git仓库的软件开发基于已有的软件供应商的源代码。源代码正在定期更新,我正在寻找最有效的方法,我已经提出了两种工作模式,我很想听听你的意见,哪一个(或者另一个)对我最有效情况。如何构建的Git分支

总体而言,将有3个各自独立的代码库每个工作完全独立的团队:A,B,C

源代码库/ A队是基于地方供应商代码退出。 源代码库/ B组是基于供应商代码由第三方退出+扩展的地方。 源代码库/团队C我试图设置的那个,它应该基于A + B和我们自己的扩展。

每当存储库中的变化,从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 

我不知道它是否有任何实际区别。

有谁在过去类似的情况,你会推荐什么办法?

回答

0

在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 

注:不管你使用哪种分支结构,你应该注意到了合并冲突,因为三个回购包含相同的文件/代码。

+0

谢谢你的回答。是的,我意识到需要解决的冲突 - 这是业务的一部分:-)因此,据我了解,一般情况下Git中的父/子分支没有额外的功能,这将有助于合并/浏览通过历史/差异。 –

+0

是的,可以从另一个分支创建分支(结帐),但它们不是父子关系,两个分支都是分开工作的。 –

+0

答案能帮助你解决问题吗?如果是的话,你可以标记它。它会帮助其他有类似问题的人。 –