这是我的方案:我想要同一个应用程序的两个版本,付费版本和免费增值版本。
当然它们之间会有一些差异,包括应用ID,但大部分代码都是相同的。
我需要知道的是如何使用github管理它,我可以在保持特定代码完整的同时进行影响它们的更改。
假设我需要更改两个应用中的某些文本,添加功能或修复影响它们的错误,是否可能?怎么样?
答案 0 :(得分:2)
您可以通过多种方式实现:
在每个分支中开发每个版本,并使用git cherry-pick
进行"传递"分支之间的内容
为
使用不同的分支使用git子模块代替分支,如上一步所述
使用构建工具/脚本以下列方式开发:在单个分支上开发,构建脚本应仅包含所需的代码。
我通常使用方式#4。有一个分支,代码分为文件夹。构建工具收集每个应用程序所需的内容并打包它。这样我就可以用简单的方式管理代码
答案 1 :(得分:1)
添加@CodeWizard解释的内容......
在并行分支上开发这两个版本是完全可能的 并使用常规合并将其中一个更改为另一个。
通常,您需要开发"参考"代码在分支上 " freemium"版本将坐在另一个分支上,仅在 "削弱"比特,并会定期接收来自的更新 "参考"所有功能和错误修复完成的分支 (当然,除非特定于" freemium"版本)。
带有"参考"的分支然后可以考虑代码 "上游"对于具有免费增量自定义的分支。
这个想法是合并不会无条件地覆盖接收
("我们的")支持合并的一方的内容("他们的#34;) - 也就是说,
如果我们在文件foo/bar.java
中有免费增值自定义,那么
从"参考"合并的一堆变化版本不碰
该文件,其内容将保留"原样" (就像我们想要的那样),
我们的自定义完好无损。
在编译案例中 - 对文件进行了更改 其中包含自定义 - 您可能需要解决冲突, 但这很正常。
"诀窍"这个设置工作是Git相当聪明 合并机器并检测已合并的文本更改就好了 不是标志伪造的冲突。所以定期进行整合是很好的 合并"从一个分支到另一个分支 - 他们自然会带来什么 改变了。
您可以再次使用上面解释的两个分支 - 包含"参考"的分支作为上游的代码 分支与免费增值模式,但这次使用变基。
通过重新定位,您可以定期修改(整个)一系列提交 它在更新的基线之上实现免费增值自定义 分支。
这种方法的优点是您的自定义始终是
"在顶部"基线分支,据说这种方法最简单
推理(一旦你实际上"得到" git rebase
做什么)。
缺点是将重新编写带有自定义的系列 (每次改变时,其提交的SHA-1名称都会发生变化)。
更新
第一种方法。
让我们假装分支"掌握"是"参考","上游" 版本和"免费增值"分支不断致残。
以下是如何实现功能/修复错误。
分叉功能分支并记录任意数量的提交。
$ git checkout -b cool_feat master
...hack hack hack
$ git commit
...
将其合并回主线:
$ git checkout master
$ git merge cool_feat
在" freemium"中取得同样的变化,即"重新整合" 主线进入"免费增值":
$ git checkout freemium
$ git merge master
冲洗,重复。
这样,功能被实现/错误被修复在"主线" 分支,然后合并到自然跟随它的分支 同时包含自定义。