git submodules are entire projects that are incorporated into another project. These submodules maintain their own version history. The most important point to understand is that when working with a submodule, you are only doing the following:
git submodule add /path/to/submodule.git path/for/submodule/in/your/project (adds a folder for the submodule, and creates .gitmodules at the root of your project) git submodule init (adds the submodule reference info from .gitmodules to your .git/config) git submodule update (checks out the submodule)
Source: http://stackoverflow.com/questions/1260748/how-do-i-remove-a-git-submodule
The easiest way to clone a project with submodules is to use the --recursive flag, which initializes and checks out all submodules.
git clone --recursive /path/to/repo.git or git clone --recursive /path/to/repo.git myproject