gpt4 book ai didi

git - 将子模块保留在工作树之外

转载 作者:行者123 更新时间:2023-12-02 01:26:36 24 4
gpt4 key购买 nike

我有一个库,我在多个项目中将其用作 git 子模块。

一般来说,有以下三种方法可以解决这个问题:

  • 让每个项目都有自己的库副本。如果您使用 --recursive 克隆项目,就会发生这种情况。 .显然,这是一种浪费,并且在一次处理多个项目时会让人感到困惑。
  • 不要克隆或注册子模块(即,将其保留为 git 默认创建的空白目录),并配置您的构建工具以在其他地方查找子模块。除了这个复杂性之外,这还有一个缺点,即子模块中的新提交不会在父项目的 git status 中看到。输出,你不能轻易git add新的子模块状态。
  • 使库存储库作为子模块目录中的别名可访问。在 Windows 上,这可以使用连接点来实现;在 Linux 上,符号链接(symbolic link)不起作用(git 认为您删除了子模块并用符号链接(symbolic link)替换了它),但是 --bind坐骑确实有效。尽管存储库布局不同(lib/.git 是一个真正的 gitdir,而不仅仅是一个指向 ../.git/modules/lib/ 中的文件的文件),这工作正常,但是创建绑定(bind)挂载很烦人,并且确实需要 sudo使用权。

  • 有没有更好的方法来做到这一点,即告诉 git 在文件系统的其他地方查找子模块的存储库?

    最佳答案

    您可以做的是使用带有 file:// 的子模块。协议(protocol),因此它将指向所需的文件夹。但它只适用于您的本地机器。
    这也称为本地协议(protocol)
    https://git-scm.com/book/ch4-1.html#Local-Protocol

    The most basic is the Local protocol, in which the remote repository is in another directory on disk.

    This is often used if everyone on your team has access to a shared filesystem such as an NFS mount, or in the less likely case that everyone logs in to the same computer. The latter wouldn’t be ideal, because all your code repository instances would reside on the same computer, making a catastrophic loss much more likely.

    关于git - 将子模块保留在工作树之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36816149/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com