Submodule (Git)

Aus Thoms Wiki
Version vom 17. Februar 2016, 11:56 Uhr von all>Verkehrsminister (Die Seite wurde neu angelegt: „= Ein Git-Unterverzeichnis doch in ein Submodul umwandeln = Siehe auch http://blog.davidecoppola.com/2015/02/how-to-create-git-submodule-from-repository-subdi…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Ein Git-Unterverzeichnis doch in ein Submodul umwandeln

Siehe auch http://blog.davidecoppola.com/2015/02/how-to-create-git-submodule-from-repository-subdirectory/, dort ist auch erklärt, wie man einzelne Unterverzeichnisse herausfiltert und in ein eigenes Repository schiebt

Szenario

Ich hatte in meinem Projekt eine externe Bibliothek eingebunden, diese lag komplett geklont vor. Nun habe ich mein Projekt auch git-versioniert. Dabei wurde die externe Bibliothek nicht berücksichtigt, weil diese ja dann ein Repository in meinem Repository war. Ich muss die Externe also in ein Submodul wandeln.

Die Schritte im einzelnen

1. externe Bibliothek löschen bzw. an einen anderen Ort sichern

2. Löschvorgang commiten:

git commit -m "Removed Library directory to replace it with submodule."

3. externe Bibliothek als Submodul hinzufügen

git submodule add LIB-URL [LIB-DIR]
// Dazu ein Beispiel:
git submodule add https://android.googlesource.com/platform/frameworks/volley volley

4. Diese Änderung committen (und pushen)

git commit -m "Replaced Library directory with submodule."
git push origin master

Wie weiter?

Wenn ich mein Projekt jetzt clone, dann mache ich das rekursiv, damit das Submodul ebenfalls geklont wird. Das Submodul wird immer in den Stand geklont, in dem ich es in meinem Projekt festgehalten habe, deswegen ist dort der Status nach dem rekursiven Clonen idR. HEAD detached, auch wenn wir in der höchsten Revision sind.