How do I "git clone" a repo, including its submodules?


How do I clone a git repository so that it also clones its submodules?

Running git clone $REPO_URL merely creates empty submodule directories.


With version 2.13 of Git and later, --recurse-submodules can be used instead of --recursive:

git clone --recurse-submodules -j8 git://
cd bar

Editor’s note: -j8 is an optional performance optimization that became available in version 2.8, and fetches up to 8 submodules at a time in parallel — see man git-clone.

With version 1.9 of Git up until version 2.12 (-j flag only available in version 2.8+):

git clone --recursive -j8 git://
cd bar

With version 1.6.5 of Git and later, you can use:

git clone --recursive git://
cd bar

For already cloned repos, or older Git versions, use:

git clone git://
cd bar
git submodule update --init --recursive

How to remove files from git staging area?

Is there a way to cache https credentials for pushing commits?