我正在尝试将子模块放入回购 .
问题是当我克隆父repo时,子模块文件夹是完全空的 .
是否有任何方法可以使'git clone parent'实际将数据放入子模块文件夹中?
示例:http://github.com/cwolves/sequelize/tree/master/lib/
nodejs-mysql-native
指向外部git,但是当我签出 sequelize
项目时,该文件夹为空...
我正在尝试将子模块放入回购 .
问题是当我克隆父repo时,子模块文件夹是完全空的 .
是否有任何方法可以使'git clone parent'实际将数据放入子模块文件夹中?
示例:http://github.com/cwolves/sequelize/tree/master/lib/
nodejs-mysql-native
指向外部git,但是当我签出 sequelize
项目时,该文件夹为空...
10 回答
迟到的答案
因为我花了整整一个小时与朋友一起摆弄:即使你有BitBucket的管理员权限,也要克隆ORIGINAL存储库并使用拥有repo的人的密码 . 很恼火,发现你遇到了这个陷阱:P
试试这个:
假设您已将子模块添加到父项目,它会自动提取子模块数据 .
原始答案2010
正如joschi在评论中提到的那样, git submodule 现在支持
--recursive
选项(Git1.6.5及更多) .有关init部分,请参阅Working with git submodules recursively .
有关更多信息,请参阅 git submodule explained .
使用git 2.8更新2016:请参阅“How to speed up / parallelize downloads of git submodules using git clone --recursive?”
您可以并行使用多个线程启动子模块 .
为实例:
试试这个在git仓库中包含子模块 .
or
试试这个 .
如果已在分支中添加了子模块,请确保将其添加到clone命令 .
如果您的子模块已添加到分支中,请务必将其包含在克隆命令中...
子模块并行提取旨在通过一次启用多个存储库的获取来减少获取存储库及其所有相关子模块所需的时间 . 这可以通过使用新的--jobs选项来完成,例如:
根据Git团队的说法,这可以大大加快更新包含许多子模块的存储库 . 当使用--recurse-submodules而不使用新的--jobs选项时,Git将逐个获取子模块 .
资料来源:http://www.infoq.com/news/2016/03/git28-released
使用Git及更高版本的2.13版本,可以使用
--recurse-submodules
而不是--recursive
:编者注:-j8是一个可选的性能优化,在2.8版本中可用,并且一次最多可以获取8个子模块 - 参见man git-clone .
使用版本1.9的Git直到版本2.12(
-j
标志仅在2.8版本中可用):使用Git及更高版本的1.6.5版,您可以使用:
对于已经克隆的repos或较旧的Git版本,请使用:
您可以使用此命令克隆包含所有子模块的repo:
或者,如果您已经克隆了项目,则可以使用:
在填充子模块之前,您必须做两件事: