【发布时间】:2022-02-06 23:43:58
【问题描述】:
我必须为新客户添加我的项目的附加版本。
目标是:
- 项目的一个主要版本,保留通用代码和 一组面向客户的版本,具有特定的附加功能 每个客户。
- 能够上传普通版本的更改。
最好的方法是将项目分解成独立的模块,但我时间有限,不能坚持那个选项 atm。我正在考虑 2 个选项
- 分叉
- 具有相同存储库的多个分支
有更好的方法吗?有什么缺点和优点? 谢谢。
【问题讨论】:
标签: git architecture
我必须为新客户添加我的项目的附加版本。
目标是:
最好的方法是将项目分解成独立的模块,但我时间有限,不能坚持那个选项 atm。我正在考虑 2 个选项
有更好的方法吗?有什么缺点和优点? 谢谢。
【问题讨论】:
标签: git architecture
您可以使用如下的分支命名策略。
<customer_name>/<branch_name>
例如:customer1/get-products
此命名策略中唯一需要注意的是,当您在 git 中将诸如 a/b/c 之类的路径命名为分支名称时,您以后不能拥有 a/b 或 a,因此您不能将分支命名为 customer和另一个名为customer/dev 的分支,git 不允许这样做。
但是您可以保留customer/dev、customer/uat、customer/master 等分支,并拥有customer/feature1 等功能分支
您的常用功能仍然可以在您的主要分支中,例如dev、uat、master 等,您可以在需要时将这些分支合并到各个客户分支。
【讨论】:
如果您出于特定原因不必将客户的代码绝对保留在不同的存储库中,那么带有分支的解决方案是最简单的(尤其是交换代码、cherry-pick、同步等),而且少得多负担(不必创建很多存储库)。
而且也更容易开始。如果您改变主意,您仍然可以创建不同的存储库。
但是,如果你不知道,看看 'git worktree' 功能为每个客户创建一个工作树,这可以让你的生活更轻松......
【讨论】: