You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git递归更新时仅保留Boost子模块的指定嵌套子模块

解决嵌套子模块的部分拉取需求

这里有两种实用方案,既能用--recursive批量处理大部分子模块,又能精准拉取boost本身及其指定的两个子模块:

方法一:分两步执行(清晰直观)

  1. 先递归初始化所有子模块,但仅拉取boost本身,不自动处理它的嵌套子模块:

    git -c submodule."lib/boost".recurse=false submodule update --init --recursive
    

    这里的submodule."lib/boost".recurse=false会让Git在处理boost时跳过自动递归,但boost模块本身会被正常克隆、初始化。

  2. 单独初始化boost下需要的两个子模块:

    git -C lib/boost submodule update --init libs/container libs/lockfree
    

    -C lib/boost相当于先切换到boost子模块目录,再执行子模块初始化命令,直接指定目标子模块路径即可。

方法二:单命令完成(精简高效)

如果想用一条命令搞定,通过多个临时配置项精准控制拉取逻辑:

git -c submodule.recurse=true -c submodule."lib/boost".recurse=false -c submodule."lib/boost/libs/container".update=checkout -c submodule."lib/boost/libs/lockfree".update=checkout submodule update --init --recursive
  • submodule.recurse=true:保持全局递归处理所有其他子模块
  • submodule."lib/boost".recurse=false:禁止自动递归boost的嵌套子模块
  • 最后两个配置强制指定boost下的两个目标子模块必须被拉取初始化

关键注意点

  • 你之前用的submodule."lib/boost".update=none会直接跳过整个boost模块,这显然不符合需求;而submodule."lib/boost".recurse=false只是阻止Git自动处理boost的子模块,boost本身仍会被正常初始化。
  • 所有通过-c设置的配置都是临时生效的,不会修改仓库的本地或全局配置,不会影响后续操作。

内容的提问来源于stack exchange,提问作者T. J. Evers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:50:04