我想添加一个引用特定(非主)分支的子模块。由于--depth=1
,下面的命令将只抓取主分支,因此该命令将不可避免地失败;
git submodule add -b myBranch --depth=1 git@host.com:some/large/repo
因为submodule add
不支持--single-branch
,这是否意味着我唯一的选择是克隆整个回购?
来自git-clone
的文档:
, 深度
创建一个历史记录截断到指定的浅克隆提交的数量。暗示
--single-branch
,除非--no-single-branch
,(不——)单个的分支
只克隆指向单个分支顶端的历史,由
--branch
选项指定或主分支指定遥控器的头指向。创建浅克隆时——depth选项,这是默认的,除非--no-single-branch
用于获取所有分支尖端附近的历史。进一步提取到结果存储库将只更新的分支的远程跟踪分支最初的克隆。如果遥控器上的HEAD没有指向任何--single-branch
克隆时的分支,没有远程跟踪创建分支
因此,如果git submodule add
使用git clone
执行克隆,那么在您的用例中就隐含了--single-branch
。但是,只有当git submodule add
将-b
选项转发给git clone
时,它才能正常工作。
实现预期结果的保证方法(不对git submodule add
的内部工作进行任何假设)是使用您选择的选项自行git clone
子模块存储库,然后将现有目录添加为子模块:
git clone -b myBranch --single-branch --depth=1 git@host.com:some/large/repo large_repo
git submodule add -b myBranch git@host.com:some/large/repo large_repo
git子模块添加选择库 (路径)
…
path是克隆子模块在superproject。如果路径不存在,则子模块由从命名URL克隆。如果路径不存在并且已经是有效的Git存储库,然后不克隆,将其添加到更改集。