git - 处理不同版本的项目并推送变更
问题描述
我最近开始使用 Git (bitbucket)。我在位桶中有一个项目和一个相应的工作区和一个存储库。现在我需要为不同的客户定制这个项目。我该如何设置?为同一工作区下的每个新客户项目创建一个新存储库?或者为每个客户项目创建新的工作空间?
当要添加新的通用功能/要更新现有的通用功能时(例如,只有少数文件有代码更改但要应用于所有客户端项目)如何处理?检查每个客户项目,进行更改和推送是很多多余的工作。
我浏览了很多链接,但找不到具体的答案。任何帮助表示赞赏。
解决方案
根据您工作的组织,bitbucket 工作区的使用看起来会有所不同。例如,我们公司将工作空间用于类似项目:www.bitbucket.org/ecommerce-apps/amazon-integration
或www.bitbucket.org/ai-components/machine-learning-template
尽管将工作空间划分为不同的客户端以保持代码库的分离在逻辑上是有意义的。
关于git结构的共性,这里是我之前做过的。
有一个 common-features.git 存储库来保存所有在项目之间保持不变的公共文件。这有助于跟踪对公共文件所做的更改的版本。如果你每个repo都pull,手动修改,push修改,没有可追溯性,很容易出错。拥有一个共同的存储库可以让人们跟踪谁更改了什么以及何时更改。
当需要使用新文件更新项目存储库时,可以克隆项目存储库,设置第二个远程并从那里提取更改。
git clone https://github.com/client1/project1
git remotes add upstream https://github.com/commons/common-features
git pull upstream branchname --allow-unrelated-histories
不幸的是,您仍然需要为每个项目存储库执行此操作,因为可能会发生不同的事情,例如不同的分支。也许您想用最新功能更新大多数项目,但只在一段时间后更新其他项目。
如果您坚持自动更新通用功能更改,您可以考虑使用webhook以便在推送到通用 repo 的 master 时将更改推送到其他 repo。
推荐阅读
- java - 如何杀死java中的几个进程?
- excel - 自动刷新工作表然后数据透视表?
- html - 如何更改聚合物元素样式
- c# - 无法从 Line Renderer inUnity 上的位置组件访问值
- python - 将多索引数据框中的所有匹配元素设置为系列
- sql - 如果 SQL 的情况
- google-app-engine - 谷歌应用引擎在将流量转移到新版本时请求失败?
- react-native - 使用 sha256 反应原生
- python - 在python中只计算一次列表中的元素而不重复
- linux - Linux:加载共享库时出错:libQtSvg.so.4:无法打开共享对象文件:没有这样的文件或目录