【发布时间】:2016-04-23 20:40:39
【问题描述】:
我有一个库,我在多个项目中将其用作 git 子模块。
一般来说,有三种方法可以解决这个问题:
让每个项目都有自己的库副本。如果您使用
--recursive克隆项目,就会发生这种情况。显然,这是一种浪费,并且在一次处理多个项目时会让人感到困惑。不要克隆或注册子模块(即,将其保留为 git 默认创建的空白目录),并配置您的构建工具以在其他地方查找子模块。除了这个复杂性之外,这还有一个缺点,即子模块中的新提交将不会在父项目的
git status输出中看到,并且您不能轻易git add新的子模块状态。使库存储库作为子模块目录中的别名可访问。在 Windows 上,这可以使用连接点来实现;在 Linux 上,符号链接不起作用(git 认为您删除了子模块并用符号链接替换了它),但
--bind挂载确实有效。虽然存储库布局不同(lib/.git是一个真正的 gitdir,而不仅仅是一个指向../.git/modules/lib/中的文件的文件),但这工作正常,但创建绑定挂载很烦人,并且确实需要sudo访问权限。
有没有更好的方法来做到这一点,即告诉 git 在文件系统的其他地方查找子模块的存储库?
【问题讨论】:
-
您对子模块的工作原理和使用方法有充分的了解,我看不出还有什么好办法。
标签: git git-submodules