[git] Работа с сабмодулями - rsajob/docs GitHub Wiki

Вытаскиваем основную ветку разработки

git checkout --track origin/devel

Добавление сабмодуля в проект (rsajob/limb.git)

git submodule add [email protected]:rsajob/limb.git lib/limb
  1. Допустим у нас появилось свободное время и мы хотим чтоб наш проект работал с последней версией субмодуля: Заходим в директорию субмодуля
cd src/vendor/symfony/

Обновляем субмодуль

git checkout -f (#Отказаться от всех изменений в рабочем каталоге)
  1. Допустим кто-то хочет развернуть ваш проект в своей локальной директории: Первым делом клонирует проект
git clone ... [your_project.git]

Если теперь зайти в директории субмодулей — обнаружим что они пусты. Для восстановления целостного проекта нужно клонировать нужные версии субмодулей. Переходим в корень проекта и запускаем команду

git submodule update --init

Если выдаёт ошибку Clone of '[email protected]:rsajob/limb.git' into submodule path 'lib/limb' failed то надо в модулях поменять ссылки на Read-only версию.

Изменить ссылку на имеющийся сабмодуль можно либо вручную в файле .gitmodules, либо так:

git config submodule.lib/limb.url git://github.com/rsajob/limb.git

Но затем для синхронизации данных в файле .gitmodules с git нужно выполнить команду (её нужно выполнять также и на других репозиториях после git pull):

git submodule sync

ПРИМЕЧАНИЕ!!! на git 1.7 git submodule sync не работает почемуто. На git 1.8+ работает.

Про некоторые грабли в сабмодулях хорошо описано тут: http://alexanius-blog.blogspot.ru/2012/04/git-submodule.html