git - 在不修改存储库结构的情况下使用 git-submodule
问题描述
我有两个类似于以下结构的 github 存储库作为示例:
repo1: [folder_X] fileA fileB fileC fileD [folder_Y] fileE fileF
repo2: [folder_M] fileB fileC fileK [folder_N] fileO fileP
正如您在两个存储库中看到的,我们在 folder_X 和 folder_M 中有一些常见文件,它们是 fileB 和 fileC。我需要这些文件有一个共同的来源,所以我不需要总是在两个存储库中修改它们。例如,这些公共文件(B 和 C)可以存储在 repo1 中的单独分支中。
在不修改回购结构的情况下有什么解决方案吗?
解决方案
如果您坚持使用 git 子模块,请注意它在存储库的基础上工作,即您只能将完整的存储库树附加为另一个存储库的子文件夹。您不能过滤它,即您从根文件夹中获取完整的存储库,其中包含所有文件和子文件夹。因此,一种干净的方法是使用公共文件创建一个 repo3,并将其作为子模块链接到 repo1 和 repo2。
另一种可能的方法是,如果您将 repo1 视为公共文件的提供者,而将 repo2 视为衍生项目(消费者)。然后你可以将repo1链接为repo2的子模块,然后修改repo2以引用repo1子文件夹内的文件。这可以是对项目文件或构建脚本的修改,或者只是符号链接。
第三种方法是不使用 git 子模块,而是使用一些包管理器。例如,一些包管理器支持从存储库中创建一个仅包含几个文件的包,然后您可以从另一个存储库重用该包。
推荐阅读
- java - 使用函数验证年龄
- sockets - 如何对侦听 unix 套接字文件的服务器进行基准测试?
- wpf - 在 WPF 中,TextBlock 的自动换行是否可以使用 inline Runs 的文本在单词之间而不是在它们的中间生成中断?
- windows-10 - 无法在 1903 中使用 F12Chooser 调试加载项
- arrays - 数组不能强制转换为整数(TypeError)
- node.js - 如何在 Node.js 中使用 express 处理 POST 请求?我编写了以下不起作用的代码
- java - swagger ui web jar在spring项目中是如何工作的?
- amazon-web-services - 无服务器在已经存在时不断尝试创建用户池域
- javascript - firestore onSnapshot 更新值,但不更新 VueJS 中的 DOM
- html - 使用angularjs调用日历函数时渲染一个新的fullcalendar实例