Как получить и объединить основной репозиторий и сделать то же самое для всех подмодулей, используя команду single ?
У меня есть репозиторий A , который включает в себяподмодуль B .Подмодуль B часто обновляется, и изменения не всегда актуальны.
Я могу обновлять и объединять новые изменения, выполнив
cd A/B <-- enter submodule directory
git pull <-- run pull to fetch and !!merge!! submodule changes
Что я хочу сделатьэто запустить одну команду, чтобы вытащить и объединить основной репозиторий и сделать то же самое со всеми подмодулями.
cd A <-- Now enter to parent directory
git pull --recurse-submodules <-- Fetch&merge changes on main repository
<-- and pull changes on all submodules
Что на самом деле происходит:
- Изменения в репозитории A выбираются и объединяются => OK
- Изменения в хранилище субмодулей B только выбираются и не объединяются => NOK
Текущее решение:
cd A
git pull --recurse-submodules
cd B
git merge <-- Now merge fetched changes from submodule remote
или:
cd A
git pull --recurse-submodules
git submodule foreach git merge origin master
Другие вопросы, которые я проверил, не повезло:
Простой способ получить последниевсех подмодулей git
Запустить git pull для всех подкаталогов
Запуск git --help pull
в версии git 2.20.1
Я вижу это сообщение:
ОШИБКИ С помощью --recurse-submodules можно только получать новые коммиты в уже извлеченных подмодулях.Когда, например, восходящий поток добавил новый подмодуль в только что извлеченные коммиты суперпроекта, сам подмодуль не может быть выбран, что делает невозможным проверку этого подмодуля позже без необходимости повторной выборки.Ожидается, что это будет исправлено в будущей версии Git.
Это связано с проблемой?