Git 如何限制更新子模块?

Git 如何限制更新子模块?,git,git-submodules,Git,Git Submodules,我有一个git项目,我想克隆和更新它的子模块。我克隆了这个项目 git clone --single-branch -b my_branch ssh://my_repo my_repo 我可以使用初始化和拉取子模块 git submodule init git submodule update 我遇到的问题是,所有存储库的git历史记录(~1.3Gb)都会随每个子模块上的更新一起拉取。我的.gitmodules文件如下所示 [submodule "mod_1"] path = path/

我有一个git项目,我想克隆和更新它的子模块。我克隆了这个项目

git clone --single-branch -b my_branch ssh://my_repo my_repo
我可以使用初始化和拉取子模块

git submodule init
git submodule update
我遇到的问题是,所有存储库的git历史记录(~1.3Gb)都会随每个子模块上的更新一起拉取。我的
.gitmodules
文件如下所示

[submodule "mod_1"]
  path = path/to/mod_1
  url = my_repo
  branch = mod_1_branch
[submodule "mod_2"]
  path = path/to/mod_2
  url = my_repo
  branch = mod_2_branch
在上面的
git clone
命令中,我使用
--single branch
选项解决了整个存储库的问题。据我所知,此选项不适用于
git子模块更新


如何限制子模块仅提取其分支历史记录?是否有适当的自定义命令(如
update
custom command
中所述)?

不幸的是,目前您无法浅取(
git fetch--depth=1
)指定的提交对象

然而,在Git 2.5+(2015年第2季度)中,通过新的服务器端配置uploadpack.Allowareachablesha1inwant可以获取单个提交(不克隆完整的repo)

它的文件说:

uploadpack.AllowareachableSha1InWant::

允许
upload pack
接受请求获取数据的获取请求
可从任何引用提示访问的对象。但是,请注意
计算对象可达性在计算上非常昂贵。
默认值为
false

有关更多详细信息,请参阅