Git update submodules recursief

Mijn projectstructuur

ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)

Hoe kan ik submodules recursief updaten? Ik heb al een aantal git-commando’s geprobeerd (op ProjectA root)

git submodule foreach git pull origin master

of

git submodule foreach --recursive git pull origin master

maar kan geen bestanden van Twig ophalen.


Antwoord 1, autoriteit 100%

git submodule update --recursive

U zult waarschijnlijk ook de –init optie willen gebruiken, waardoor alle niet-geïnitialiseerde submodules worden geïnitialiseerd:

git submodule update --init --recursive

Opmerking: in sommige oudere versies van Git, als u de optie --initgebruikt, worden reeds geïnitialiseerde submodules mogelijk niet bijgewerkt. In dat geval moet u de opdracht ook uitvoeren zonder de optie --init.


Antwoord 2, autoriteit 6%

De manier waarop ik gebruik is:

git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master

Antwoord 3, autoriteit 3%

Aangezien het kan gebeuren dat de standaard branch van je submodules nietmasteris (wat in mijn geval veel gebeurt), is dit hoe ik de volledige Git submodules automatiseer upgrades:

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'

Antwoord 4, autoriteit 3%

In recente Git (ik gebruik v2.15.1), zal het volgende de upstream submodule wijzigingen recursief in de submodules samenvoegen:

git submodule update --recursive --remote --merge

U kunt --inittoevoegen om niet-geïnitialiseerde submodules te initialiseren en --rebasegebruiken als u wilt rebasen in plaats van samenvoegen.

U moet de wijzigingen achteraf vastleggen:

git add . && git commit -m 'Update submodules to latest revisions'

Other episodes