[git] Работа с сабмодулями - rsajob/docs GitHub Wiki
Вытаскиваем основную ветку разработки
git checkout --track origin/devel
Добавление сабмодуля в проект (rsajob/limb.git)
git submodule add [email protected]:rsajob/limb.git lib/limb
- Допустим у нас появилось свободное время и мы хотим чтоб наш проект работал с последней версией субмодуля: Заходим в директорию субмодуля
cd src/vendor/symfony/
Обновляем субмодуль
git checkout -f (#Отказаться от всех изменений в рабочем каталоге)
- Допустим кто-то хочет развернуть ваш проект в своей локальной директории: Первым делом клонирует проект
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