如何`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