Подмодуль git foreach мастер происхождения git pull против git pull --recursive-submodules
Я управляю репозиторием с несколькими подмодулями. Некоторое время сейчас я использую
$ git submodule foreach git pull origin master
чтобы внести последние изменения для всех этих парней. Однако недавно я узнал о
$ git pull --recurse-submodules
и дал ему попробовать, но кажется, что изменения только извлекаются, так что вам нужно
$ git submodule update --recursive
для того, чтобы на самом деле оформить изменения. Тем не менее, этот последний, похоже, ничего не делает в моем хранилище, несмотря на то, что подмодули явно вызывают изменения. Я также заметил, что мои подмодули извлекаются для некоторого коммита вместо master или какой-либо другой ветви.
- Я делаю что-то неправильно?
- Или это артефакт
foreach
как я раньше делал вещи? - Как я могу исправить вещи так, чтобы
pull --recurse-submodules
а такжеsubmodule update --recursive
работать как положено?
1 ответ
git submodule update --recursive
обновляет субмодули в соответствии с коммитом в родительском репо. Поэтому вам нужно зафиксировать изменения в родительском репо, чтобы эта команда могла что-либо сделать.
С этой настройкой:
/proj/.git
/proj/module/.git
Вы вносите изменения в "модуль", фиксируете и нажимаете их. В "proj" вы фиксируете модуль (он просто показывает изменение хеша подмодуля).
Теперь, когда вы извлекаете и обновляете субмодуль, он обновляет "модуль" для использования нового коммита.