我有一些在Github上发布的Rails项目( project1 )
我想基于 project1 构建另一个Rails项目( project2 )。
Project2 正在处理与project1数据库具有相同结构的数据库。但是 project1 数据库还有其他内容
Project1 有几个静态页面,将在 Project2 中更改
此外, Project2 网站标题和网站菜单文字会有细微变化
Project1和Project2中的逻辑,算法等相同。
我想摆脱冗余。我不想在Github上为 Project2 创建一个新的存储库。我想在 Project1 代码上构建 Project2 ,但使用其他database.yml以及静态页面和网站标题文本中的一些更改。
这样做的最佳方法是什么?
更新
此外,我希望 project1 的逻辑(控制器,模型等)的更改将反映到 project2 。
答案 0 :(得分:2)
您可以通过执行git branch project2
然后git checkout project2
之类的操作来分支您的主项目,并且您从该点开始执行的所有工作只会发生在project2
中。
如果您需要返回project1
,则可以提交或存储更改,并执行git checkout project1
以返回上一个代码。
此外,如果您需要从project1
和&#34进行一些更改,请将其带入"在您的project2
分支机构中,您可以使用git cherry-pick [SHA]
。要找出SHA哈希值,您需要检查该分支的日志,即git log project1
,并将顶部的部分视为commit 5479d1834c281b29a7948e426e73bfdf27032569
,其中包含长串数字和letters是SHA哈希。
答案 1 :(得分:1)
我想摆脱冗余。
您可以通过在github中创建新的 Project2 作为附加项目来避免冗余,但是为了重用 Project1 的代码它。您应将 Project1 形成为gem,然后将其发布。在 Project2 初始值设定项中,只包括 Project1 s',并为views
,controllers
和{做同样的事情{1}}。所以基本上在 Project2 中,您只需要创建应该专门为项目更改的部分。
所以只需使用这两件事:
递归导入您可以使用Rails Engine完成的Rails功能。所以
引擎可以被视为为其主机应用程序提供功能的微型应用程序。 因此,引擎和应用程序可以被认为是几乎相同的东西,只是有微妙的差异。
然后您可以添加并使用models
方法,该方法将从 Project1 加载子模块以重复使用它,或者在 Project2的强>