使用git-submodule而不修改存储库结构

时间:2018-06-09 12:22:51

标签: git github git-submodules git-subtree

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

repo1: [folder_X] 的fileA 的 FILEB fileC 提交 [folder_Y] fileE fileF

repo2: [folder_M] 的 FILEB fileC fileK [folder_N] fileO fileP

正如您在两个存储库中看到的,我们在folder_X和folder_M中有一些常见文件,即fileB和fileC。我需要有这些文件的公共源,所以我不需要在两个存储库中修改它们。这些公共文件(B和C)可以存储在repo1中的单独分支中作为示例。

在没有修改回购结构的情况下有没有解决方案?

1 个答案:

答案 0 :(得分:1)

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

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

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