Обновления в Git подмодулей рекурсивно
мой проект struture
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
как я могу рекурсивно обновлять подмодули? Я уже пробовал некоторые команды git (в корне проекта)
git submodule foreach git pull origin master
или
git submodule foreach --recursive git pull origin master
но не может вытащить файлы Twig.
4 ответов
git submodule update --recursive
вы также, вероятно, захотите использовать параметр --init, который заставит его инициализировать любые неинициализированные подмодули:
git submodule update --init --recursive
Примечание: в некоторых старых версиях Git, если вы используете --init
опция, уже инициализированные подмодули могут не обновляться. В этом случае вы также должны запустить команду без .
способ, которым я использую:
git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master
как это может случиться, что ветвь по умолчанию ваших подмодулей не 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'
в недавнем Git (я использую v2.15.1), следующие изменения подмодулей вверх по потоку рекурсивно объединятся в подмодули:
git submodule update --recursive --remote --merge
вы можете добавить --init
для инициализации любых неинициализированных подмодулей и использования --rebase
Если вы хотите перебазировать вместо слияния.
вам нужно зафиксировать изменения после этого:
git add . && git commit -m 'Update submodules to latest revisions'