Android 在git中具有不同版本的源代码,其中包含一些常见的和不同的内容

Android 在git中具有不同版本的源代码,其中包含一些常见的和不同的内容,android,git,version-control,Android,Git,Version Control,我知道这听起来有点奇怪,但我真的在与这种情况作斗争,git分支不是答案 我有一个情况,我需要保持我的android源代码在不同的版本。但问题是,这些版本中的一些代码很常见,但有些则不常见,因为它们是基于不同安卓市场标准的文件和编辑;他们需要与众不同 因此,我需要找到一种方法将我的源代码保存在不同的版本中,当我编辑代码时,这些共同的差异会在所有版本中生效,但当我编辑不同的文件和内容(与市场相关的文件和内容)时,我只需要它们生效并添加到自己的版本中 注:我不能使用git分支,因为我需要随时跟踪每一个

我知道这听起来有点奇怪,但我真的在与这种情况作斗争,
git分支
不是答案

我有一个情况,我需要保持我的android源代码在不同的版本。但问题是,这些版本中的一些代码很常见,但有些则不常见,因为它们是基于不同安卓市场标准的文件和编辑;他们需要与众不同

因此,我需要找到一种方法将我的源代码保存在不同的版本中,当我编辑代码时,这些共同的差异会在所有版本中生效,但当我编辑不同的文件和内容(与市场相关的文件和内容)时,我只需要它们生效并添加到自己的版本中

注:我不能使用git分支,因为我需要随时跟踪每一个版本的变化以及它们之间的共性和差异,这不是一种逻辑方法,因为它可能会导致问题

附言:我需要找到一种方法来配置类似于
gitignore
的东西来完成这个任务,并使git将公共和差异推送到它们的相关版本中


注:如果有任何其他风投或项目有助于实现这一点,我很高兴知道。

使用不同的项目。将您的公共零件创建为库,然后创建包含该库的不同项目。然后,您可以将其放在一个存储库中。或者,您可以将它们放在不同的存储库中,并使用git子模块在它们之间进行链接。

git分支可以满足您的需求

假设您需要处理两个市场标准,因此您可以在三个分支中管理源代码:

  • common
    分支:管理常用文件的版本。使用
    .gitignore
    匹配所有可能的非公共文件,以便将其他分支合并到
    公共
    分支中,不会跟踪非公共文件
  • market1
    分支:管理market1标准中的所有源代码。market1标准的非通用文件仅在
    market1
    分支中管理
  • market2
    分支:管理market2标准中的所有源代码。market2标准的非通用文件仅在
    market2
    分支中管理
工作流程应为:

  • common
    分支机构上进行更改时,如果要更新不同市场分支机构中的公共文件,可以将
    common
    分支机构直接合并到市场分支机构中
  • market1
    branch中开发和管理关于market1标准的非通用文件版本。如果您更改了
    market1
    分支中的公共文件,您可以通过将
    market1
    分支合并到
    common
    分支来更新公共分支中的版本(非公共文件不会添加到公共分支中,因为它在
    .gitignore
    中匹配)
  • market2
    branch中开发和管理关于market2标准的非通用文件版本。如果您更改了
    market2
    分支中的公共文件,则可以通过将
    market2
    分支合并到
    common
    分支中来更新
    common
    分支中的版本

这些更改是否无法使用常用的典型本地化和/或应用程序配置文件技术进行处理?如何为每个分支创建不同的gitignore?来自市场1和市场2的原因文件位于公共分支机构的gitignore中,但必须在市场分支机构中添加和提交。另外,三个分支中常见的文件在某些行(如android manifest)中只有一些差异,那么这些文件又如何呢?没有必要创建
。gitignore
对于每个分支,只忽略
common
分支中的非常见文件就足够了。由于
common
branch用于公共文件的记录版本,所以当您将
common
branch合并到市场分支中时,只需将公共文件合并到市场分支中即可。无论三个分支之间有什么不同(几行或很多文件),您可以将分支合并为工作流。但问题是我永远不想将我的公共分支合并到市场。只需要单独的版本。既要跟踪每一个版本,也不要错过任何一个市场分支。因为它可能会导致其他市场分支机构将来出现问题,因为common与不常见的文件和行合并。如果要分别管理common文件、market1标准的非common文件、market2标准的非common文件的版本,还可以使用git子模块或git子树。那么,在单独的分支机构或单独的回购协议中管理这些文件,并将关系视为主要子模块,您真正需要什么呢?