我想使用git来管理一组代码文件和一组客户特定的配置文件。
在服务器上有几个目录,每个客户两个:一个测试,一个生产。
我希望能够使用git跟踪代码文件和客户特定配置文件的更改等,但我不想将配置文件合并回主分支。
换句话说,我希望能够维护配置文件的历史记录(在每个测试和生产目录中),并能够将特定版本的代码签出到客户的测试或生产目录中。
我以为我可以为每个客户创建一个分支并在这些分支上维护他们的配置文件,但每当我检查主分支,配置文件,因为它们不是配置分支的一部分,它们会被删除
我是否需要使用两个不同的存储库来处理这个问题?
如果我想更改代码或配置文件,如何切换要使用的存储库?
我不想创建自定义配置文件并将它们重命名为真实配置文件名,因为每次我签出主文件时,我都会将每个客户的配置文件放在特定客户的目录中。
必须有一个简单的方法来做到这一点?
答案 0 :(得分:1)
根据以下假设,我会向您提出这个解决方案:
git
git
我认为您可以通过以下设置逃脱:
master
分支customerA-prod
和customerA-test
如果可能,提交适用于master
分支的所有客户的错误修正,并将其合并回客户分支。
对于客户特定的更改,仅使用客户分支。
一般情况下,尽量避免将客户分支合并到master
。
如果确实有必要,请确保不将任何配置文件合并到master
(删除它们,以便master
不会出现配置文件。)
通过这个建议的设置,我认为应该可以共享代码(如果需要),跟踪配置文件的历史记录(每个客户/环境)。
但每当我检查主分支,配置文件,因为它们不是配置分支的一部分,它们会被删除
我不明白这里的问题。
也许您需要master
上的一些客户配置文件才能开发?
如果是这样,你可以查看配置文件(同时仍然避免通过做这样的事情来提交它们)
$ git checkout customerA-prod -- <path-to-config-file>
$ git reset HEAD -- <path-to-config-file>
$ # work, commit (but avoid adding the config file)
git checkout <branch> -- <file>
语法对于将文件放在当前分支上的其他分支上非常有用。
这有帮助吗?