【问题标题】:How can I add a specific folder from a git repo as a git submodule?如何将 git repo 中的特定文件夹添加为 git 子模块?
【发布时间】:2023-03-29 18:39:01
【问题描述】:

我有一个 git repo,我想向它添加一个子模块。问题是,子模块作为另一个 repo 中的文件夹存在。我可以只将该文件夹添加为子模块吗?

【问题讨论】:

标签: git git-submodules


【解决方案1】:

我最终这样做了:

  1. 创建一个submodules 目录。
  2. 在此目录中添加子模块。
  3. 创建指向子模块内特定目录的符号链接。

这样你就有了默认的 Git 子模块行为,并且在你的项目中你只使用了整个子模块的一个子集。

【讨论】:

  • 嗯我不知道这是否会与我的 Windows 开发人员一起使用,但我们会尝试并告诉
  • @CaptainMan 如果您使用“启用符号链接”权限安装 GitBash,则此方法有效!
  • 优秀。除了 antora/asciidoctor 不支持符号链接 :(
【解决方案2】:

如果您确实需要在自己的存储库历史记录中包含其他存储库的一部分,那么subtree merge strategy 比子模块更合适。

但在这两种情况下,完整的存储库都链接到您的存储库,而不仅仅是一个目录。
还有partial cloning is not possible

您可以尝试将 isolate that directory 放在它自己的存储库中,然后将其添加为子模块,但这意味着它的历史将与它最初来自的存储库完全分开。

【讨论】:

  • 我在您的subtree merge strategy 中发现了这条注释特别相关:Also, in case you make changes to the other project, it is easier to submit changes if you just use submodules.
  • @DevinRhode 11 年后,我同意。这些天我主要使用子模块。
【解决方案3】:
  1. 创建新分支
  2. 将所需文件移至新分支
  3. 添加子模块到超级仓库
  4. 结帐子模块到新分支

【讨论】:

    猜你喜欢
    • 2016-09-30
    • 2020-07-08
    • 2019-07-21
    • 2012-07-06
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多