我想添加一个引用特定(非主)分支的子模块。以下只会因--depth=1
而占用主分支,因此该命令将不可避免地失败;
git submodule add -b myBranch --depth=1 git@host.com:some/large/repo
由于submodule add
不支持--single-branch
,这是否意味着我唯一的选择是克隆整个回购?
答案 0 :(得分:2)
- 深度 深度
创建一个浅层克隆,其历史记录被截断为指定的 提交次数。 隐含
--single-branch
,除非--no-single-branch
用于获取所有分支的提示附近的历史记录。<强> - [无糖]单分支强>
仅克隆导致单个分支的提示的历史记录, 由
--branch
选项或主分支指定 遥控器的HEAD指向。 使用。创建浅层克隆时 --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 submodule add 选项 存储库 [路径]
...
path 是克隆子模块中存在的相对位置 上层项目。如果 path 不存在,则创建子模块 从指定的URL克隆。 如果 路径 确实存在并且已经有效 Git存储库,然后将其添加到变更集中而不进行克隆。