Iphone 重复代码vs轻松合并

Iphone 重复代码vs轻松合并,iphone,git,Iphone,Git,我在master中有工作代码。我需要创建一个新的应用程序作为一个新的分支,它有额外的功能,这是什么已经在主人类似。我还需要不时做合并的变化,从主到新的分支 我尝试了以下方法: 单独创建新类,尽管它们具有类似的功能+git merge master没有问题 有重复的代码 为公共功能创建抽象类,然后从中继承旧的主类和新的分支类+没有重复的 代码 git合并主机存在永久性问题 它对#2的修改-将抽象类移动到主分支-解决了上述两个问题,但 master中有不必要的(抽象)代码 那么哪种方式更

我在master中有工作代码。我需要创建一个新的应用程序作为一个新的分支,它有额外的功能,这是什么已经在主人类似。我还需要不时做合并的变化,从主到新的分支

我尝试了以下方法:

  • 单独创建新类,尽管它们具有类似的功能+git merge master没有问题
    • 有重复的代码
  • 为公共功能创建抽象类,然后从中继承旧的主类和新的分支类+没有重复的 代码
    • git合并主机存在永久性问题
  • 它对#2的修改-将抽象类移动到主分支-解决了上述两个问题,但
    • master中有不必要的(抽象)代码
  • 那么哪种方式更可取呢?还是有正确的(其他)解决方案

    更新:

    添加了#3。

    理想的解决方案是在中隔离抽象类,并使父repo(具有master和新应用程序分支的repo)使用所述子模块。
    Ie在子模块(本身是独立的git repo)所在的子目录中查找公共类

    这样,您就可以保持独立:

    • 主程序和应用程序之间的合并
    • 公共类的演变(在它们自己的git repo中完成,作为主repo中的子模块导入)

    将公共(抽象)类移动到子模块而不是将它们保留在主分支(#3)中有什么好处?@M.Y.与该稳定API集相关的历史在其自身的repo中被隔离,允许您引用该子模块的精确时间点(标记或SHA1),并允许您分离标记(V1、V2、V3…)从您将在该子模块上设置的标记中选择您的主应用程序(或新应用程序):您的应用程序V4.3可以使用通用API的V2.1:两个不同的开发生命周期。