Git обновляет субмодули рекурсивно
Мой проект struture
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
Как я могу рекурсивно обновлять субмодули? Я уже попробовал некоторые команды git (в корне ProjectA)
git submodule foreach git pull origin master
или же
git submodule foreach --recursive git pull origin master
но не могу вытащить файлы Twig.
Ответы
Ответ 1
git submodule update --recursive
Возможно, вы также захотите использовать опцию --init, которая будет инициализировать любые неинициализированные подмодули:
git submodule update --init --recursive
Примечание: в некоторых старых версиях Git, если вы используете --init
, уже инициализированные подмодули могут не обновляться. В этом случае вам также следует запустить команду без --init
.
Ответ 2
Я использую:
git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master
Ответ 3
Как может случиться так, что ветвь ваших подмодулей по умолчанию не master
(что случается очень часто в моем случае), вот как я могу автоматизировать полные обновления подмодулей Git:
git submodule init
git submodule update
git submodule foreach 'git fetch origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'
Ответ 4
В недавнем Git (я использую v2.15.1), следующее будет рекурсивно объединять изменения подмодулей вверх по течению:
git submodule update --recursive --remote --merge
Вы можете добавить --init
для инициализации любых неинициализированных подмодулей и использовать --rebase
если вы хотите выполнить перебазирование вместо слияния.
Вам необходимо зафиксировать изменения впоследствии:
git add . && git commit -m 'Update submodules to latest revisions'