我正在尝试将子模块放入回购。
问题是当我克隆父 repo 时,子模块文件夹是完全空的。
是否有任何方法可以使'git clone parent' 实际将数据放入子模块文件夹中?
例如: http : //github.com/cwolves/sequelize/tree/master/lib/
nodejs-mysql-native
指向外部 git,但是当我签出sequelize
项目时,该文件夹为空...
使用 Git 的 2.13 及更高版本, --recursive
已被弃用, --recurse-submodules
应该使用:
git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar
编者注: -j8
是一个可选的性能优化,在 2.8 版本中可用,并且一次最多可以获取 8 -j8
模块 - 参见man git-clone
。
使用版本 1.9 的 Git 直到版本 2.12( -j
标志仅在 2.8 + 版本中可用):
git clone --recursive -j8 git://github.com/foo/bar.git
cd bar
使用 Git 及更高版本的 1.6.5 版,您可以使用:
git clone --recursive git://github.com/foo/bar.git
cd bar
对于已经克隆的 repos 或较旧的 Git 版本,请使用:
git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive
在填充子模块之前,您必须做两件事:
git submodule init
git submodule update
原始答案 2010
正如joschi在评论中提到的那样, git submodule
现在支持--recursive
选项(Git1.6.5 和更多)。
如果指定了
--recursive
,则此命令将递归到已注册的子模块中,并更新其中的任何嵌套子模块。
请参阅 init 部分递归使用 git 子模块 。
有关详细信息,请参阅git submodule
。
使用 1.6.5 版本的 git 及更高版本,您可以通过使用
–-recursive
选项克隆超级项目来自动执行此操作:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
使用 git 2.8 更新 2016:请参阅 “ 如何使用git clone --recursive
加速 / 并行化 git 子模块的下载git clone --recursive
? ”
您可以并行使用多个线程启动子模块。
为实例:
git fetch --recurse-submodules -j2