如何构建 Git 个分支
How to structure Git branches
我必须设置 git 存储库以基于软件供应商的现有源代码开发软件。源代码会定期更新,我正在寻找最有效的方法,我已经提出了 2 种工作模型,我很想听听您对哪一种(或另一种)在我的工作中最有效的意见情况。
总的来说,将有 3 个完全独立的团队,每个团队在自己独立的代码存储库中工作:A、B、C。
源代码存储库/团队 A 是基于供应商代码的位置。
源代码存储库/团队 B 是基于供应商代码的退出 + 第三方扩展的地方。
我正在尝试设置的源代码存储库/团队 C,应该基于 A + B 和我们自己的扩展。
每当存储库 A 发生变化时,B 团队的人员会将其拉入他们的存储库,集成并使其可供 C 团队使用。
B 队也可以自己制作独立版本(没有来自 A 队的任何更改),他们将为 C 队提供这些版本。
对于团队 C,我会设置存储库单独的分支:
master
TeamA
TeamB
develop
TeamA 和 TeamB 分支将由我们(Team C)管理——每当我们收到来自 A 和 B 团队的代码并将它们合并到开发中时,我们将自行更新它们。
我们的目标是能够理解我们在 TeaA 和 TeamB 之间的差异(开发)是什么(以及 TeamA 和 TeamB 之间的差异),并且最容易地将团队 A 和 B 的更改集成到开发中。
我想知道如果我设置以下结构有什么不同:
1) 使所有分支基于master
master
TeamA
TeamB
develop
或者,2) 构造如下分支的父子结构
master
TeamA
TeamB
develop
我想知道这是否有任何实际区别。
有没有人有过类似的情况,你推荐什么方法?
在 Git 仓库中,每个分支都是独立工作的。因此,您提供的两个结构实际上与其他结构相同。并且您的分支结构可以为您的团队(团队 C)工作。
并且你也可以免除repoC中的TeamA
和TeamB
分支,直接从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
注意:无论你使用哪个分支结构,你都应该注意到合并冲突,因为三个仓库包含相同的files/code。
我必须设置 git 存储库以基于软件供应商的现有源代码开发软件。源代码会定期更新,我正在寻找最有效的方法,我已经提出了 2 种工作模型,我很想听听您对哪一种(或另一种)在我的工作中最有效的意见情况。
总的来说,将有 3 个完全独立的团队,每个团队在自己独立的代码存储库中工作:A、B、C。
源代码存储库/团队 A 是基于供应商代码的位置。 源代码存储库/团队 B 是基于供应商代码的退出 + 第三方扩展的地方。 我正在尝试设置的源代码存储库/团队 C,应该基于 A + B 和我们自己的扩展。
每当存储库 A 发生变化时,B 团队的人员会将其拉入他们的存储库,集成并使其可供 C 团队使用。
B 队也可以自己制作独立版本(没有来自 A 队的任何更改),他们将为 C 队提供这些版本。
对于团队 C,我会设置存储库单独的分支:
master
TeamA
TeamB
develop
TeamA 和 TeamB 分支将由我们(Team C)管理——每当我们收到来自 A 和 B 团队的代码并将它们合并到开发中时,我们将自行更新它们。
我们的目标是能够理解我们在 TeaA 和 TeamB 之间的差异(开发)是什么(以及 TeamA 和 TeamB 之间的差异),并且最容易地将团队 A 和 B 的更改集成到开发中。
我想知道如果我设置以下结构有什么不同:
1) 使所有分支基于master
master
TeamA
TeamB
develop
或者,2) 构造如下分支的父子结构
master
TeamA
TeamB
develop
我想知道这是否有任何实际区别。
有没有人有过类似的情况,你推荐什么方法?
在 Git 仓库中,每个分支都是独立工作的。因此,您提供的两个结构实际上与其他结构相同。并且您的分支结构可以为您的团队(团队 C)工作。
并且你也可以免除repoC中的TeamA
和TeamB
分支,直接从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
注意:无论你使用哪个分支结构,你都应该注意到合并冲突,因为三个仓库包含相同的files/code。