代码之家  ›  专栏  ›  技术社区  ›  A. Fasih

在不修改存储库结构的情况下使用git子模块

  •  0
  • A. Fasih  · 技术社区  · 8 年前

    我有两个类似以下结构的github存储库作为示例:

    报告1: [folder_X] 菲拉 文件 文件 提出 [文件夹_Y] 菲利 锉刀

    报告2: [文件夹_M] 文件 文件 菲利克 [文件夹] 菲利奥 文件

    正如您在这两个存储库中看到的,我们在文件夹_X和文件夹_M中有一些常见的文件,它们是fileB和fileC。我需要这些文件有一个共同的来源,所以我不需要总是在两个存储库中修改它们。例如,这些公共文件(B和C)可以存储在repo1中的单独分支中。

    在不修改回购结构的情况下,有什么解决方案吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   battlmonstr    8 年前

    如果您坚持使用git子模块,那么请注意它是在存储库的基础上工作的,也就是说,您只能将完整的存储库树作为另一个存储库的子文件夹附加。您无法对其进行筛选,也就是说,您可以从根文件夹获取包含所有文件和子文件夹的完整存储库。因此,一种干净的方法是创建一个带有公共文件的repo3,并将其作为子模块链接到repo1和repo2。

    另一种可能的方法是,将repo1视为公共文件的提供者,将repo2视为衍生项目(消费者)。然后,您可以将repo1链接为repo2的子模块,然后修改repo2以引用repo1子文件夹中的文件。这可以是对项目文件或构建脚本的修改,也可以只是符号链接。

    第三种方法是不使用git子模块,而是使用一些包管理器。例如,一些包管理器支持使用存储库中的几个文件创建一个包,然后您可以从另一个repo中重用该包。