我们有两个客户(并且还在增加),他们共享一个项目的80%的代码,主要区别在于图像,配置文件和一些HTML。没有什么像母版一样,因为没有单独的数据,项目将无法运行。
使用git处理这种情况的最佳实践是什么?可以以某种方式使用git flow吗?
当前我们只有4个分支机构:
customer1_dev -> customer1_master
customer2_dev -> customer2_master
我们正在挑选这些之间的大多数提交。
答案 0 :(得分:1)
您的案例听起来像您有一个存储库/服务/代码库,应该为两个客户端分叉。我建议创建一个master分支,其中包含80%的代码(公共部分)。发生更改时,客户分支将以该主分支为基础。 理想情况下,您将它们分成3个存储库,而客户端存储库就是这些存储库的分支。
就个人而言,我不会依赖git来实现不同的配置和媒体。使用配置或某种cms会更安全。
答案 1 :(得分:1)
在这种情况下,使用Git管理代码库的主要选择是从通用代码库分支,然后为每个客户维护单独的分支(并将对这些客户分支的提交限制在他们特定的东西上)。 所有共同的发展都应该发生在主线分支中。
然后,当您准备为特定客户构建发行候选版本时,切换到他们的branch
并在该客户的分支机构中执行git merge master
。这会将所有更改从主线引入到您的客户特定分支。
您可以执行rebase
而不是合并。但这不是那么有利,因为如果一个错误出现在不在主分支中的客户分支中,则可能使查找错误的根本原因更加困难。但是merge
或rebase
进入客户分支机构应该为您描述的情况提供良好的工作流程。