Клонировать внешний репозиторий в подкаталог в качестве субмодуля

$ git submodule add git://github.com/chneukirchen/rack.git rack
Initialized empty Git repository in /opt/subtest/rack/.git/
remote: Counting objects: 3181, done.
remote: Compressing objects: 100% (1534/1534), done.
remote: Total 3181 (delta 1951), reused 2623 (delta 1603)
Receiving objects: 100% (3181/3181), 675.42 KiB | 422 KiB/s, done.
Resolving deltas: 100% (1951/1951), done.

Посмотреть конфигурационный файл .gitmodules, который содержит соответствие между URL и локальным подкаталогом, в который был загружен подмодуль

$ cat .gitmodules 
[submodule "rack"]
    path = rack
    url = git://github.com/chneukirchen/rack.git

Инициализировать локальный файл конфигурации .gitmodules

$ git submodule init
Submodule 'rack' (git://github.com/chneukirchen/rack.git)
registered for path 'rack'

Получить все данные из подмодуля и перейти к соответствующему коммиту, указанному в вашем основном проекте

$ git submodule update
Initialized empty Git repository in /opt/myproject/rack/.git/
remote: Counting objects: 3181, done.
remote: Compressing objects: 100% (1534/1534), done.
remote: Total 3181 (delta 1951), reused 2623 (delta 1603)
Receiving objects: 100% (3181/3181), 675.42 KiB | 173 KiB/s, done.
Resolving deltas: 100% (1951/1951), done.
Submodule path 'rack': checked out '08d709f78b8c5b0fbeb7821e37fa53e69afcf433'
-----------