git - 'git clone'如何包括子模块?

  显示原文与译文双语对照的内容

我试图把一个子模块放到一个仓库中。

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

是否有办法使'git clone 父级'真正将数据放入子模块文件夹中?

示例:http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native 指向一个外部的git,但是当我签出 sequelize 项目时,那个文件夹是空的。。

时间:

使用 1.6.5版本的Git和更高版本,你可以使用:


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

就像 joschi 在评论中提到的, git submodule 现在支持 --recursive 选项( git1.6.5 等) 。

如果指定了 --recursive,这里命令将递归到已经注册的子模块,并更新所有嵌套子模块。

请参见与git子模块递归地处理初始化部分。
有关更多信息,请参见 git submodule explained解释

随着 –-recursive 1.6.5 option,与版本变更后的文件及更高版本,你可以自动实现这一点,通过克隆该


git clone --recursive git://github.com/mysociety/whatdotheyknow.git

answer


//git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

就像我花了整整一个小时摆弄一个朋友: 即使你在BitBucket上拥有管理员权限,仍然要克隆原始存储库,并使用拥有者的密码。 发现你遇到了这个 minetrap: p

...