如何`git克隆`包括子模块?

我试图把一个子模块放入回购站。

问题是,当我克隆父回购,子模块文件夹是完全空的。

有什么办法可以让'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

使用Git版本1.9直到版本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

对于已经克隆好的回购版或旧版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 fetch --recurse-submodules -j2
链接地址: http://www.djcxy.com/p/2699.html

上一篇: How to `git clone` including submodules?

下一篇: Easy way to pull latest of all git submodules