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

如何仅将特定目录添加为Git Submodule?

解决Git Submodule仅引入特定子目录的问题

Git本身没有直接支持git submodule add只拉取特定子目录的参数,但可以通过**稀疏检出(Sparse Checkout)**结合子模块的方式实现需求,具体步骤如下:

  1. 添加子模块但暂不检出文件
    先用--no-checkout参数添加子模块,避免拉取整个仓库的内容:

    git submodule add --no-checkout <外部仓库的Git URL> <本地要存放子模块的路径>
    
  2. 进入子模块目录并配置稀疏检出
    切换到子模块的本地路径,开启稀疏检出功能:

    cd <本地子模块路径>
    git config core.sparseCheckout true
    
  3. 指定需要拉取的子目录
    在子模块的.git/info/sparse-checkout文件中写入需要保留的子目录路径(每行一个路径,支持通配符):

    # 示例:添加需要的两个子目录
    echo "src/utils/" >> .git/info/sparse-checkout
    echo "docs/api/" >> .git/info/sparse-checkout
    
  4. 拉取指定目录的内容
    切换到目标分支(比如main或master),Git会自动只拉取你指定的子目录:

    git checkout main
    
  5. 提交主仓库的配置变更
    回到主仓库,提交子模块的配置文件和子模块目录的变更:

    cd ..
    git add .gitmodules <本地子模块路径>
    git commit -m "Add sparse-checkout submodule for [外部仓库名称]"
    

后续维护注意事项

  • 更新子模块时,使用git submodule update --remote命令,Git会遵循稀疏检出规则只更新指定目录的内容。
  • 如果需要调整要拉取的子目录,直接修改子模块目录下的.git/info/sparse-checkout文件,然后执行git pull即可同步变更。

内容的提问来源于stack exchange,提问作者Francisco Díaz Durán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:05:39