Leute, ich habe gerade submodule verwendet, um einige Git-Repos zu organisieren, hier ist die Adresse:
Repos
Ich möchte alle Submodule in ein neues Verzeichnis namens repos verschieben, zum Beispiel jquery -> repos/jquery.
Ich ändere die .gitmodules Datei, aber es scheint nicht zu funktionieren. Was soll ich machen?
Seit git 1.8.5,
git mv old/submod new/submod
funktioniert wie erwartet und erledigt alle Klempnerarbeiten für Sie. Möglicherweise möchten Sie git 1.9.3 oder neuer verwenden, da es Korrekturen für das Verschieben von Submodulen enthält.
Credits: Mike Lowerey aus dem Kommentar unten
Ursprüngliche Antwort
Hatte gerade das gleiche Problem und löschte schließlich die Submodulreferenz (wie beschrieben In diesem Artikel) und neu erstellen, wo ich es haben wollte.
Um Ihrem Beispiel des Verschiebens von Submodulen zu folgen jquery
hinein repos/jquery
- Löschen Sie die (normalerweise dreizeilige) Submodulreferenz aus
.gitmodules
.
- Prüfen
.git/config
für Verweise auf das Submodul und entfernen Sie diese, falls vorhanden
- tun
git rm --cached jquery
um die Submodulreferenz aus dem Repository auszuschneiden
- Entfernen Sie den alten Submodulordner
- Erstellen Sie Ihre Submodulreferenz (wie Sie es möglicherweise zuvor getan haben) mit neu
git submodule add git://github.com/jquery/jquery.git repos/jquery
Falls Ihr Submodul auf ein bestimmtes Tag bzw. Commit gesetzt war (was Sie sicherlich in einem stabilen Projekt haben werden), haben Sie es erneut gesetzt.
Aufgrund dieses komplexen Prozesses hoffe ich stark, dass es einen einfacheren Weg gibt (oder zumindest auf der Git-Roadmap geben wird), dies zu erreichen. Wenn nicht, könnten sicherlich einige Skripte zusammengefummelt werden, um dies schneller zu erledigen …
Sehen “[How do I move an existing git submodule within a git repository?][1]” [1]: stackoverflow.com/questions/4604486/…
– Benutzer1338062
19. Mai 2012 um 8:47 Uhr