我有一个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 submodule update
。
如何限制子模块仅提取其分支历史记录?是否有适当的自定义命令(如update
> custom command
下所述here)?
答案 0 :(得分:1)
不幸的是,目前你无法浅提取(git fetch --depth=1
)指定的提交对象。
然而,在Git 2.5+(2015年第2季度)中,通过新的服务器端配置uploadpack.allowReachableSHA1InWant
,可以获取单个提交(无需克隆完整的存储库)。
其文件说:
uploadpack.allowReachableSHA1InWant ::
允许
upload-pack
接受请求获取的获取请求 可以从任何参考提示访问的对象。但请注意 计算对象可达性在计算上是昂贵的 默认为false
。
有关详细信息,请参阅Pull a specific commit from a remote git repository。