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

如何在克隆主Git仓库时同步克隆其他仓库的指定目录?

Git克隆主仓库时同步获取其他仓库指定子目录的实现方法

Git本身支持这类需求,但原生的git clone单命令无法直接完成,需要通过以下两种常见方式实现:

方法一:Git子模块(Submodule)结合Sparse Checkout

子模块可关联其他仓库,再通过稀疏检出只拉取指定目录,适合需要长期同步的场景:

  1. 先克隆repo_1:git clone -b master <repo_1的URL>
  2. 进入repo_1目录,添加repo_2作为子模块(指定本地存放路径):
    git submodule add <repo_2的URL> ./local/repo_2_dev
    
  3. 进入子模块目录,配置稀疏检出:
    cd ./local/repo_2_dev
    git config core.sparseCheckout true
    echo "/src/dev" >> .git/info/sparse-checkout
    git pull origin master
    
  4. 回到repo_1根目录,提交子模块配置:
    cd ../..
    git add .gitmodules ./local/repo_2_dev
    git commit -m "Add repo_2 /src/dev as submodule"
    
  5. 后续克隆repo_1时,加上--recurse-submodules参数即可同步获取:
    git clone -b master --recurse-submodules <repo_1的URL>
    

方法二:远程分支结合Sparse Checkout

无需子模块,直接在主仓库中添加远程并拉取指定目录,适合临时或一次性同步场景:

  1. 克隆repo_1:git clone -b master <repo_1的URL>
  2. 进入repo_1目录,添加repo_2为远程仓库:
    git remote add repo_2 <repo_2的URL>
    
  3. 启用稀疏检出并配置要拉取的目录:
    git config core.sparseCheckout true
    # 保留主仓库所有内容
    echo "/*" >> .git/info/sparse-checkout
    # 指定拉取repo_2的/src/dev目录到本地对应路径
    echo "./local/repo_2_dev/src/dev/" >> .git/info/sparse-checkout
    
  4. 拉取repo_2的master分支内容:
    git pull repo_2 master
    

注意:这种方式没有子模块的关联跟踪,后续需要手动执行git pull repo_2 master来同步更新。

内容的提问来源于stack exchange,提问作者Amit Kumar Bhakat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:01:14