Search code examples
gitgit-submodules

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.


Solution

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

    git clone --recurse-submodules -j8 git://github.com/foo/bar.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://github.com/foo/bar.git
    cd bar
    

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

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

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

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