Aktualisieren von Submodulen
Eine häufige Aufgabe bei der Arbeit mit Submodulen ist es, diese mit ihren Remote-Repositories auf dem neuesten Stand zu halten. Lassen Sie uns lernen, wie man unser Submodul aktualisiert.
Initialisieren und Aktualisieren von Submodulen
Wenn Sie gerade ein Repository geklont haben, das Submodule enthält, müssen Sie diese initialisieren und aktualisieren. Für unser bestehendes Repository können wir diesen Prozess mit Folgendem demonstrieren:
cd ~/project/main-repo
git submodule init
git submodule update
Der Befehl init initialisiert Ihre Submodul-Konfiguration, und der Befehl update holt die Daten und checkt den in Ihrem Haupt-Repository angegebenen Commit aus.
Sie können diese Befehle auch kombinieren:
git submodule update --init
Aktualisieren von Submodulen auf die neueste Remote-Version
Wenn Sie ein Submodul auf den neuesten Commit in seinem Remote-Repository aktualisieren möchten, können Sie Folgendes verwenden:
cd ~/project/main-repo
git submodule update --remote libs/libgit2-backends
Dieser Befehl holt die neuesten Änderungen aus dem Remote-Repository und aktualisiert das Submodul. Sie sollten eine Ausgabe sehen, die anzeigt, dass Git Änderungen abruft.
Nachdem Sie diesen Befehl ausgeführt haben, überprüfen wir den Status des Submoduls:
git submodule status
Sie werden feststellen, dass die Ausgabe jetzt ein Pluszeichen (+) am Anfang anzeigt, was darauf hindeutet, dass der ausgecheckte Commit des Submoduls von dem im Haupt-Repository aufgezeichneten abweicht:
+abcdef1234567890abcdef1234567890abcdef12 libs/libgit2-backends (origin/HEAD)
Um die Änderungen an Ihrem Haupt-Repository zu bestätigen, führen Sie Folgendes aus:
git status
Sie sollten eine Ausgabe sehen, die anzeigt, dass das Submodul geändert wurde:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: libs/libgit2-backends (new commits)
Committen der aktualisierten Submodul-Referenz
Um den aktualisierten Submodul-Status in Ihrem Haupt-Repository aufzuzeichnen, müssen Sie die Änderungen hinzufügen und committen:
git add libs/libgit2-backends
git commit -m "Update libgit2-backends submodule to latest version"
Die Ausgabe sollte anzeigen, dass Sie die neue Submodul-Referenz erfolgreich committet haben.
Überprüfen des aktualisierten Status
Nachdem Sie die aktualisierte Submodul-Referenz committet haben, überprüfen wir den Status erneut:
git submodule status
Die Ausgabe sollte am Anfang kein Pluszeichen mehr haben, was darauf hindeutet, dass das Submodul jetzt mit dem im Haupt-Repository aufgezeichneten synchron ist:
abcdef1234567890abcdef1234567890abcdef12 libs/libgit2-backends (origin/HEAD)
Verstehen der Submodul-Update-Optionen
Der Befehl git submodule update verfügt über mehrere Optionen, die steuern, wie Aktualisierungen durchgeführt werden:
--remote: Aktualisieren auf den neuesten Commit auf dem Remote-Tracking-Branch
--merge: Änderungen zusammenführen, wenn der aktuelle Branch hinter dem Remote zurückliegt
--rebase: Änderungen rebasen, wenn der aktuelle Branch hinter dem Remote zurückliegt
--recursive: Auch verschachtelte Submodule aktualisieren
Für die meisten grundlegenden Anwendungsfälle ist git submodule update --remote ausreichend.