2

我有一个项目,我想克隆到一个新项目中,该项目将与原始项目同时发展。

这两个项目最终将有不同的目标,但将共享未来的功能。

如果我保留一个包含 2 个分支的存储库,恐怕这会导致太多差异。
如果我将项目拆分为 2 个存储库,我不确定在此之间合并功能会有多容易。

我最近两年才使用 git,我不确定是否掌握了它。

如何使 2 个项目发展并与 git 共享一些功能?

4

1 回答 1

2

这与 Git 关系不大。使用任何源代码控制工具(包括没有),您都会面临同样的组织问题。这些问题之所以存在,是因为它们很难回答。我对您的项目了解不多,无法给您推荐,但我会提供一些替代方案。这些选项不是相互排斥的。

  • 同一存储库中的不同分支- 这实际上具有 2 个不同的存储库,只是它们同时克隆。两个分支之间的合并没有任何意义,因此像这样将两个项目的源代码保持在一起确实没有任何优势。不要这样做。
  • 一个存储库;在构建时区分- 保留一个存储库和一个master包含 2 个构建的分支。您可以从同一源构建项目 A 或项目 B。任何共享源的功能实际上都将从相同的文件构建。每次进行更改时,都必须确保两个构建仍然有效,并且您对一个项目的更改不会破坏另一个项目。因为您只使用一个项目,所以版本控制、发布和分支更容易。
  • 一个存储库;在运行时区分- 像以前一样,只有一个生成一个生成输出,而不是 2 个单独的生成。可以在运行时启用和禁用功能。如果您不想将它们作为不同的产品出售,您可以通过菜单、配置文件或许可方案来完成此操作。
  • 三个存储库- 您有 2 个可交付成果和它们共享的一些通用代码。将该通用代码分解为您也维护的单独库。然后你有一个像这样的依赖图:

    +-----------+    +-----------+
    | Project A |    | Project B |
    +-----------+    +-----------+
             \          /
              \        /
          +----------------+
          | Common Library |
          +----------------+
    

项目 A 和项目 B 都依赖于公共库。您可以通过多种方式管理这种依赖关系(依赖关系管理本身就是一个巨大的话题)。公共库可以有一个构建,它在某个地方发布一个工件,以后可以由项目 A 和项目 B 的构建使用。或者,您可以在每个项目的子目录中使用库的源代码进行构建。Git 子模块可以帮助这种方法。

于 2013-07-20T18:37:47.653 回答