在Github上使用基本相同的代码管理2个应用程序的最佳方式

时间:2018-04-17 20:00:01

标签: git github mobile

这是我的方案:我想要同一个应用程序的两个版本,付费版本和免费增值版本。

当然它们之间会有一些差异,包括应用ID,但大部分代码都是相同的。

我需要知道的是如何使用github管理它,我可以在保持特定代码完整的同时进行影响它们的更改。

假设我需要更改两个应用中的某些文本,添加功能或修复影响它们的错误,是否可能?怎么样?

2 个答案:

答案 0 :(得分:2)

您可以通过多种方式实现:

  1. 在每个分支中开发每个版本,并使用git cherry-pick进行"传递"分支之间的内容

  2. 使用不同的分支
    • "公共"共享内容的代码和分支
    • v1& v2代表不同的代码
  3. 使用git子模块代替分支,如上一步所述

  4. 使用构建工具/脚本以下列方式开发:在单个分支上开发,构建脚本应仅包含所需的代码。

  5. 我通常使用方式#4。有一个分支,代码分为文件夹。构建工具收集每个应用程序所需的内容并打包它。这样我就可以用简单的方式管理代码

答案 1 :(得分:1)

添加@CodeWizard解释的内容......

  • 在并行分支上开发这两个版本是完全可能的 并使用常规合并将其中一个更改为另一个。

    通常,您需要开发"参考"代码在分支上 " freemium"版本将坐在另一个分支上,仅在 "削弱"比特,并会定期接收来自的更新 "参考"所有功能和错误修复完成的分支 (当然,除非特定于" freemium"版本)。

    带有"参考"的分支然后可以考虑代码 "上游"对于具有免费增量自定义的分支。

    这个想法是合并不会无条件地覆盖接收 ("我们的")支持合并的一方的内容("他们的#34;) - 也就是说, 如果我们在文件foo/bar.java中有免费增值自定义,那么 从"参考"合并的一堆变化版本不碰 该文件,其内容将保留"原样" (就像我们想要的那样), 我们的自定义完好无损。

    在编译案例中 - 对文件进行了更改 其中包含自定义 - 您可能需要解决冲突, 但这很正常。

    "诀窍"这个设置工作是Git相当聪明 合并机器并检测已合并的文本更改就好了 不是标志伪造的冲突。所以定期进行整合是很好的 合并"从一个分支到另一个分支 - 他们自然会带来什么 改变了。

  • 您可以再次使用上面解释的两个分支 - 包含"参考"的分支作为上游的代码 分支与免费增值模式,但这次使用变基。

    通过重新定位,您可以定期修改(整个)一系列提交 它在更新的基线之上实现免费增值自定义 分支。

    这种方法的优点是您的自定义始终是 "在顶部"基线分支,据说这种方法最简单 推理(一旦你实际上"得到" git rebase做什么)。

    缺点是将重新编写带有自定义的系列 (每次改变时,其提交的SHA-1名称都会发生变化)。

更新

第一种方法。

让我们假装分支"掌握"是"参考","上游" 版本和"免费增值"分支不断致残。

以下是如何实现功能/修复错误。

  1. 分叉功能分支并记录任意数量的提交。

    $ git checkout -b cool_feat master
    ...hack hack hack
    $ git commit
    ...
    
  2. 将其合并回主线:

    $ git checkout master
    $ git merge cool_feat
    
  3. 在" freemium"中取得同样的变化,即"重新整合" 主线进入"免费增值":

    $ git checkout freemium
    $ git merge master
    
  4. 冲洗,重复。

  5. 这样,功能被实现/错误被修复在"主线" 分支,然后合并到自然跟随它的分支 同时包含自定义。