Например, нужно выстроить такую структуру:
./MY_PROJECT/
./MY_PROJECT/3RDPARTY_PROJECT/
Добавим 3RDPARTY_PROJECT в качестве дочернего модуля.
cd ./MY_PROJECT/
git submodule add https://git.assembla.com/3RDPARTY_PROJECT/
git submodule add git://github.com/3RDPARTY/PROJECT.git 3RDPARTY_PROJECT
git commit -m "Added 3RDPARTY_PROJECT submodule"
Обновим 3RDPARTY_PROJECT до актуального состояния.
cd ./3RDPARTY_PROJECT/
git pull
cd ..
git add 3RDPARTY_PROJECT/
git commit -m "Upgraded 3RDPARTY_PROJECT to version XYZ"
Наконец можно передать изменения в удаленное хранилище репозитория MY_PROJECT.
Чтобы скачать весь проект снова:
git clone --recursive git://github.com/MY/PROJECT.git
Для того чтобы подкачать и обновить все субмодули, можно дать такую команду:
git pull && git submodule init && git submodule update && git submodule status
--
./MY_PROJECT/
./MY_PROJECT/3RDPARTY_PROJECT/
Добавим 3RDPARTY_PROJECT в качестве дочернего модуля.
cd ./MY_PROJECT/
git submodule add https://git.assembla.com/3RDPARTY_PROJECT/
git submodule add git://github.com/3RDPARTY/PROJECT.git 3RDPARTY_PROJECT
git commit -m "Added 3RDPARTY_PROJECT submodule"
Обновим 3RDPARTY_PROJECT до актуального состояния.
cd ./3RDPARTY_PROJECT/
git pull
cd ..
git add 3RDPARTY_PROJECT/
git commit -m "Upgraded 3RDPARTY_PROJECT to version XYZ"
Наконец можно передать изменения в удаленное хранилище репозитория MY_PROJECT.
Чтобы скачать весь проект снова:
git clone --recursive git://github.com/MY/PROJECT.git
Для того чтобы подкачать и обновить все субмодули, можно дать такую команду:
git pull && git submodule init && git submodule update && git submodule status