我尝试过并且有效的是为您的产品代码创建一个存储库,例如product_x
. 您为每个客户端分叉它,从而产生单独的存储库,如下所示:
product_x_company_a
,
product_x_company_b
,
product_x_company_c
,
由于拉取请求不允许从父母到孩子,但只允许从孩子到父母,我们必须遵循不同的路线。
我在本地做什么,是在每个公司存储库中添加,例如product_x_company_a
除了origin
有自己的 repo url,也parent
指向product_x
repo
git remote add parent https://github.com/ourcompany/product_x.git
如果您键入git remote -v
,您将在此特定文件夹中看到类似的列表:
origin https://auser@github.com/ourcompany/product_x_company_a.git (fetch)
origin https://auser@github.com/ourcompany/product_x_company_a.git (push)
parent https://auser@github.com/ourcompany/product_x.git (fetch)
parent https://auser@github.com/ourcompany/product_x.git (push)
然后可以从本地子存储库中提取推送到产品的更改,如下所示:
git pull parent master
如果一切都按预期在本地工作 - 它们可以像这样被推送到特定的客户回购:
git push origin master
您通常不需要提交某些内容,因为您基本上将提交从一个仓库传递到另一个仓库!
您可以在这些存储库中更改公司特定的代码,同时如果产品(父级)中开发了错误或功能,则可以轻松地将其推送给所有客户 :)
请注意,最好不要直接在分支上master
而是在dev
分支上完成,这样您就可以在进入生产分支之前先运行单元测试、集成测试、代码质量指标和手动测试。