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 --init
gebruikt, 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 nietmaster
is (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 --init
toevoegen om niet-geïnitialiseerde submodules te initialiseren en --rebase
gebruiken als u wilt rebasen in plaats van samenvoegen.
U moet de wijzigingen achteraf vastleggen:
git add . && git commit -m 'Update submodules to latest revisions'