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

如何在Git中为项目指定目录设置子模块,区分公共与私有目录?

实现方案:拆分主仓库与私有子模块

要实现公共目录存主仓库、私有目录作为独立子模块的需求,可按以下步骤操作:

1. 拆分原仓库(若已有单一仓库)

如果项目原本是一个单一Git仓库,先通过git filter-repo工具拆分出主仓库和各私有子模块的提交历史:

1.1 提取主仓库(仅保留公共目录)

  • 克隆原仓库到本地新目录:
    git clone <原仓库URL> main-repo
    cd main-repo
    
  • 过滤掉所有私有目录(Http、Repositories、Tests),仅保留公共目录内容:
    git filter-repo --path-glob '**/!(Http|Repositories|Tests)'
    
  • 将处理后的仓库推送到新的主远程仓库:
    git remote set-url origin <主仓库远程URL>
    git push -f origin main
    

1.2 提取每个私有目录为独立仓库

以Module/Submodule/Http为例:

  • 克隆原仓库到本地新目录:
    git clone <原仓库URL> module-submodule-http
    cd module-submodule-http
    
  • 仅保留该私有目录的历史,并将其移至仓库根目录:
    git filter-repo --path 'Module/Submodule/Http' --to-subdirectory-filter 'Http'
    
  • 将处理后的仓库推送到私有远程仓库(仅授权开发者可访问):
    git remote set-url origin <私有Http仓库远程URL>
    git push -f origin main
    
  • 重复上述步骤,分别为每个Submodule下的Repositories、Tests目录创建独立的私有远程仓库。

2. 在主仓库中添加私有子模块

进入已创建好的主仓库本地目录,为每个私有目录添加对应的子模块:

2.1 添加单个私有子模块

以Module/Submodule/Http为例:

# 进入主仓库中对应Submodule的目录
cd Modules/Module/Submodule
# 添加子模块,指定私有仓库URL和本地目录名
git submodule add <私有Http仓库远程URL> Http

2.2 提交子模块引用

添加完所有私有子模块后,提交主仓库的变更:

cd ../../.. # 回到主仓库根目录
git add .gitmodules Modules/Module/Submodule/Http Modules/Module/Submodule/Repositories Modules/Module/Submodule/Tests
git commit -m "Add private directories as submodules"
git push origin main

3. 开发者使用流程

普通开发者(无私有仓库权限)

  • 克隆主仓库:
    git clone <主仓库远程URL>
    
    此时主仓库中的私有目录(Http、Repositories、Tests)仅为占位符,无法拉取内容,开发者只能查看公共目录。

授权开发者(有私有仓库权限)

  • 克隆主仓库并初始化所有子模块:
    git clone --recurse-submodules <主仓库远程URL>
    
  • 若已克隆主仓库,可手动初始化并拉取子模块:
    git submodule update --init --recursive
    
  • 若只需拉取特定子模块(比如仅Http):
    git submodule update --init Modules/Module/Submodule/Http
    

注意事项

  • 私有远程仓库需配置权限控制(比如私有仓库权限、SSH密钥授权),确保仅指定开发者可访问。
  • 子模块的更新需单独操作:进入子模块目录拉取最新代码,或在主仓库执行git submodule update --remote更新所有子模块。
  • 主仓库仅跟踪子模块的提交哈希,不存储子模块的实际内容,因此普通开发者无法获取私有目录的代码。

内容的提问来源于stack exchange,提问作者shamaseen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:46:14