用两个主控器使用git的方法

用两个主控器使用git的方法,git,Git,我们有两个客户(和计数),他们共享一个项目80%的代码,主要区别是图像、配置文件和一些HTML。没有什么比得上master,因为没有单独的数据,项目就无法运行 用git处理这种情况的最佳实践是什么?有可能以某种方式使用git流吗 目前我们只有4家分公司: customer1_dev -> customer1_master customer2_dev -> customer2_master 我们在这两者之间挑选大部分的承诺 您的案例听起来像是有一个存储库/服务/代码库,应该为两个客户

我们有两个客户(和计数),他们共享一个项目80%的代码,主要区别是图像、配置文件和一些HTML。没有什么比得上master,因为没有单独的数据,项目就无法运行

用git处理这种情况的最佳实践是什么?有可能以某种方式使用git流吗

目前我们只有4家分公司:

customer1_dev -> customer1_master
customer2_dev -> customer2_master

我们在这两者之间挑选大部分的承诺

您的案例听起来像是有一个存储库/服务/代码库,应该为两个客户端分叉。我建议创建一个主分支,其中包含80%的代码(公共部分)。当发生更改时,客户机分支会将其自身重设到此主分支。 理想情况下,您可以将这些协议分为3个回购协议,客户回购协议就是其中的一个分支


就我个人而言,我不会在不同的配置和媒体上依赖git。使用configs或某种cms会更安全。

在这种情况下,使用Git管理代码库时的主要选择是从公共代码库分支,然后为每个客户维护单独的分支(并将对这些客户分支的提交限制为其特定内容)所有共同发展都应发生在主线分支机构

然后,当您准备为特定客户构建候选发行版时,切换到他们的
分支
,并在该客户的分支中执行:
git merge master
。这将把所有的变化从主线带到您的客户特定的分支机构


您可以执行
重设基础
,而不是合并。但这并不那么有利,因为如果一个bug出现在一个不在主线分支的客户分支中,它会使跟踪bug的根本原因变得更加困难。但是,无论是
合并
还是
重设客户分支机构的基础
都应该为您描述的情况提供一个良好的工作流程。

为什么不使用配置而不是单独的回购进行分离呢?我们一开始就是这样,但之前需要运行一些脚本来加载不同的图像和图标,语言文件和配置,然后再开始开发。在构建之前,我们必须更改另外几个文件。这感觉不对:(我们必须在一次回购中为两个客户保存所有文件。您如何区分配置文件和图像?类似于环境变量?我如何处理package.json等文件中的不同部分?对于媒体,我将使用环境变量+不同的目录(路径)来区分它)对于媒体。如果他们必须依赖不同的软件包,我建议使用Thread workspaces+lerna的monorepo结构。我想我可以用environment vars再试一次,但是package.json的问题仍然困扰着我,因为客户坚持使用不同的名称和描述。检查这种方法:谢谢:)我用(使用角度项目更容易)但是它不适合这个项目。如果代码不能在master上运行,我怎么能测试开发呢?有两种方法,但我会从客户的分支
branch
,将
master
合并到新的分支中,然后执行测试用例。如果测试通过,
rebase
将该分支重新设置到客户分支上从…起