### Workflow по работе с внесением изменений в подмодуль __*subproject*__ Работа с подмодулями достаточно проста хоть и на первый взгляд кажется сложной. В данном примере мы будем вностить изменения в подмодуль `subproject`, который по сути является обычной директорией основного проекта `main_project` Для наглядности процесса изменения и обновления подмодуля можно посмотреть этот туториал: https://www.youtube.com/watch?v=Qe6_foSbWaQ Допустим мы уже клонировали проект `main_project`, который содержит подмодуль `subproject` и нам понадобилось внести изменения в подмодуль `subproject`. ### TL;DR ``` cd subproject # переходим в директорию подмодуля touch newfile.txt # создаем новый файл в подмодуле git add . # добавляем в индекс git commit -m 'Добавлен newfile.txt' # комитим git push # пушим cd .. # возвращаемся назад в main_project git commit -m 'Обновлена версия подмодуля subproject' # указываем основному проекту версию подмодуля git push ``` ### 1. Внесение изменений в подмодуль __*subproject*__ >Рассмотрим процесс подробнее на примере изменения подмодуля `subproject` который расположен в проекте `main_project` (основной проект, родительский). Предствим ситуацию, когда вы с командой работаете над проектом с подмодулями. Для начала мы можем проверить текущую версию подмодуля, а точнее узнать коммит (SHA) подмодуля на который ссылается основной проект: ``` # находясь в основном репозитории main_project git submodule status # 04fcb0081670212dfcad48895696558343050649 ``` Команда вернула нам хэш комита подмодуля, на который ссылается основной проект. Проверку версии (хеша коммита) так же можно выполнить командой ниже, но работает она немного иначе: ``` git ls-tree HEAD | grep commit ``` Переходим в директорию подмодуля ``` cd subproject ``` переходим в ветку `master` и спуливаем изменения `subproject` ``` git checkout master git pull ``` Ответвляемся от `master` подмодуля и создаем новую ветку для изменений ``` git checkout -b change-subproject ``` *...выполняем необходимые изменения* добавляем изменения и комитим ``` git add . git commint -m 'Добавлены новые изменения в подмодуль' ``` пушим ветку с изменениями и создаем PR в проекте `subproject` ``` git push origin change-subproject ``` ### 2. После принятого PR и успешно слитых в master коммитов: переходим в каталог подмодуля ``` cd subproject ``` переходим в мастер и забираем наши комиты ``` git checkout master git pull ``` ### 3. Указываем основному проекту версию подмодуля переходим в основной проект ``` # если находились в subproject cd .. ``` пока не закомитили новую версию можем посмотреть как изменился хэш версии (комита) сабмодуля ``` git diff subproject ``` комитим новую версию и пушим ``` git commit -am 'Обновлена версия подмодуля subproject' git push ``` Посмотрим, что версия (коммит) подмодуля, на которую ссылается основной проект была обновлена: ``` git submodule status ```