Основы работы с субмодулями в git
Работая над веб-проектом часто бывает полезным не только внедрить код стороннего разработчика, но и запастись механизмом, позволяющим обновлять этот код без лишнего шума, пота и крови.
И такой механизм конечно же есть. Так же как легко обновлять рабочий проект с помощью git - обновлять сторонний код также можно с помощью git. Для этого служит команда git submodule.
Ситуация первая:
Уже есть рабочий проект, но для его работы требуется подключение сторонней библиотеки, уже расположенной в git-репозитарии (например на серверах GitHub). Для внедрения таких библиотек достаточно в консоли из корневой директории ввести:
git submodule add git://github.com/КОД/РЕПКА.git ПАПКА
Инициализация URL’ов репозиториев в конфиге проекта-родителя:
git submodule init
Ситуация вторая:
Локальная библиотека для нескольких локальных проектов. Если она уже у Вас под управлением git - добавляем по выеописанному сценарию. Если нет - инициализируем для нее репозитарий, и используем в нескольких проектах локальные копии.
И что важно - каждая независима от остальных, зависит только от репозитария источника. Это удобно, поскольку делает каждый из проектов самодостаточным и независимым.
Если понадобилось обновить субмодули:
Все подмодули проекта до последней HEAD версии:
git submodule foreach 'git checkout master && git pull origin master'
Для обновления одного модуля, например vendor:
cd vendor git checkout master git pull origin master cd .. git add vendor git commit -m 'Updated vendor to latest version'