Skip to content

Instantly share code, notes, and snippets.

@san9dev
Last active May 18, 2022 19:38
Show Gist options
  • Save san9dev/e3eec0027cf4ede18e10160a06a60882 to your computer and use it in GitHub Desktop.
Save san9dev/e3eec0027cf4ede18e10160a06a60882 to your computer and use it in GitHub Desktop.
работа с внесением изменений в подмодули git

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment