Eine eher vernachlässigte Git Funktion sind die Submodules. Mit diesen kann man in ein Git-Repository andere Git-Repositorys einbinden. Dies ist vor allem Praktisch, wenn ein Teil des Großen und Ganzen in Testing laufen soll und der Hauptteil im Stable.
Dies hilft auch im Upgrade Prozess oder wenn man immer wieder dieselben Repositorys in verschiedene Projekte einbinden muss.

Wie verhalten sich Submodules zu regulären Repositorys?

Ein Submodule unterscheidet sich nicht groß von einem regulärem Repository in einem Ordner. Alles, was du in einem normalen Git Repository machen kannst, kannst du auch innerhalb eines Submodules bewerkstelligen.

Das Hauptrepository

Für Submodules muss zuerst ein Hauptrepository angelegt werden. Für ein einfaches Repository gehe wie folgt vor:

mkdir Hauptrepo
cd Hauptrepo

git init

Das erste Submodule

Nun kann auch schon losgelegt werden mit dem Einbinden von Submodules.

git submodule add https://github.com/Truemmerer/coloredcement.git

Wenn man einen bestimmten Branch haben möchte, dann kann man dies auch mitgeben:

git submodule add -b stable https://github.com/Truemmerer/coloredcement.git

.gitmodules

Welche Submodules in einem Repository liegen und welche Ordner und Branches der jeweiligen Standard ist, ist in der Datei .gitmodules festgelegt.

Wenn ein Submodule den branch vom aktuellen Hauptrepository haben soll, dann kann in dieser Datei folgendes geschrieben werden:

branch = *

Updaten der Submodules

Wenn du nun einzelne oder alle Submodules auf den aktuellen Stand bringen möchtest, dann kannst du wie folgt vorgehen:

Alle: git submodule update --remote
Spezifisches:git subdmodule update --remote coloredcement

Hauptrepo klonen und Submodules initialisieren

Wenn ein Repository geklont wird, werden nicht automatisch die Submodules geladen. Mit folgendem Befehl kann dies jedoch bewerkstelligt werden:

git submodules init

Sollen dabei die aktuellsten Versionen der Repositorys geholt werden, geht dies wie folgt:

git submodule update --init --remote