如何克隆git存储库,以便它也克隆其子模块?

运行gitclone$REPO_URL只会创建空的子模块目录。


当前回答

在Git 2.13及更高版本中,可以使用--recurse子模块代替--recursive:

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

编者注:-j8是一种可选的性能优化,在2.8版中提供,并且一次并行获取最多8个子模块——参见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

对于已克隆的repo或较旧的Git版本,请使用:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

其他回答

克隆存储库时,可以使用--recursive标志。此参数强制git克隆存储库中所有已定义的子模块。

git clone --recursive git@repo.org:your_repo.git

克隆后,有时子模块分支可能会发生更改,因此在其之后运行以下命令:

git submodule foreach "git checkout master"

[快速回答]

克隆父回购(包括一些子模块回购)后,请执行以下操作:

git submodule update --init --recursive

只需在项目目录中执行这些操作。

$ git submodule init
$ git submodule update

迟交的答复

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

正如我刚刚花了整整一个小时和一个朋友在一起闲逛:即使你有BitBucket的管理员权限,也要克隆原始存储库,并使用拥有回购的人的密码。发现你撞上了这个地雷陷阱,我很恼火:P

尝试在git存储库中包含子模块。

git clone -b <branch_name> --recursive <remote> <directory>

or

git clone --recurse-submodules