После обычной команды архивирования выполните следующее:
git submodule foreach 'cd REPO_ROOT/$path && git archive HEAD | tar -x -C TARGET_ROOT/$path'
Здесь REPO_ROOT - это место, где находится ваше репо, а TARGET_ROOT - место, где вы положили свою архивную версию. (Я предполагаю, что у вас есть папка TARGET_ROOT, в которой развернутая версия первого git archive
вызова. Если вам нужен последний zip / tar, вы можете tar / zip конечную папку)
git submodule foreach
предоставляет переменную $path
. Подробнее см. Раздел git help submodule
foreach.