我在Codeigniter中有一个项目,通过Git和Github管理,包含我的'样板'定制和库(如集中式Render库),我用于所有CI项目 - 让我们称之为'Baseline'。
在我开发和完善基线CI项目的同时,我也在开发当前的客户项目,我们将其称为'客户'。
我的问题是 - 同时开发基线项目和客户项目的最有效方法是什么?例如,我可以在Client项目中创建一个新的控制器和模型,但随后添加新的帮助器,一些通用视图并添加到我认为需要添加到Baseline的几个库中。我是否需要执行两次提交,一次用于Baseline(并将其推送到远程Baseline repo),然后再次提交Client项目?
我一直在试图弄清楚如何使用子模块或分支来完成同样的事情,但子模块似乎需要在Git中使用自己的目录结构,并且在分支时我不确定它是如何工作的。
帮助?
答案 0 :(得分:2)
由于我猜测子模块需要的单独目录结构设置对你来说是不行的,所以我建议改为:
有一个存储库(A)是您的“基线”项目。在该存储库中的基线上完成所有工作,并在那里提交。
将该存储库克隆到另一个存储库(B),然后为该客户端项目完成所有工作。将(A)保留为远程(如果您git clone (A)
,它将自动设置为origin
;您可以将github远程添加为github
而不是origin
)。
然后,当您对基线(A)存储库进行更新时,将它们提交到(A),然后使用git pull
将它们从(A)拉到(B)。 (永远不要从(B)推送到(A),因为您不希望基准仓库中有客户代码。)
所以是的,您需要单独提交基线更新和客户端更新,但您不必两次提交相同的代码。
答案 1 :(得分:1)
我建议使用分支或子模块。
使用分支,您将拥有baseline
分支和client
分支。更新client
后切换到baseline
时,请将baseline
合并到client
。
使用子模块,任一存储库都可以是顶级模块,另一个存储库可以是子模块。这两种布局都具有一定的逻辑意义(baseline
位于顶部,client
取决于它,因此是一个孩子;顶部有client
,它使用baseline
作为库,这应该是孩子;这取决于你)。
我会推荐分支。