423 Stimmen

Git aktualisiert Untermodule rekursiv

Meine Projektstruktur

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

Wie kann ich Submodule rekursiv aktualisieren? Ich habe bereits einige Git-Befehle ausprobiert (auf ProjectA Root)

git submodule foreach git pull origin master

ou

git submodule foreach --recursive git pull origin master

kann aber keine Dateien aus Twig ziehen.

909voto

drewag Punkte 91541
git submodule update --recursive

Sie werden wahrscheinlich auch die Option --init verwenden wollen, die dafür sorgt, dass alle nicht initialisierten Untermodule initialisiert werden:

git submodule update --init --recursive

Anmerkung: in einigen älteren Versionen von Git wenn Sie den --init können bereits initialisierte Untermodule nicht aktualisiert werden. In diesem Fall sollten Sie den Befehl auch ohne --init Option.

57voto

William Entriken Punkte 33360

Ich verwende die Methode:

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

26voto

Sebastien Varrette Punkte 3796

Da es vorkommen kann, dass die Standardverzweigung Ihrer Untermodule no master (was bei mir häufig vorkommt), automatisiere ich auf diese Weise die vollständigen Aktualisierungen der Git-Submodule:

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'

25voto

mrts Punkte 13405

In aktuellem Git (ich verwende v2.15.1) werden Änderungen an Upstream-Submodulen wie folgt rekursiv in die Submodule eingefügt:

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

Sie können hinzufügen --init um alle nicht initialisierten Untermodule zu initialisieren, und verwenden Sie --rebase wenn Sie statt einer Zusammenführung eine Neubasierung vornehmen wollen.

Sie müssen die Änderungen anschließend festschreiben:

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

12voto

Stefano Favero Punkte 241

Wie wäre es mit

git config --global submodule.recurse true

und es vergessen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X