Ich habe ein Git-Repository mit einem Submodul erstellt. Ich kann das Submodul selbst anweisen, seinen Remote-Repository-Pfad zu ändern, bin mir jedoch nicht sicher, wie ich dem übergeordneten Repository mitteilen soll, wie der Remote-Repository-Pfad für das Submodul geändert werden soll.
Ich wäre nicht überrascht, wenn ich etwas Pech hätte und die Dinge manuell erledigen müsste, da selbst das Löschen von Submodulen nicht einfach ist.
git
git-submodules
Andrew Grimm
quelle
quelle
git submodule set-url [--] <path> <newurl>
Antworten:
Sie sollten nur in der Lage sein, die
.gitmodules
Datei zu bearbeiten , um die URL zu aktualisieren, und dann auszuführengit submodule sync
, um diese Änderung am Superprojekt und Ihrer Arbeitskopie widerzuspiegeln.quelle
git submodule foreach -q git config remote.origin.url
, um "aktuelle" Submodul-URLs anzuzeigen.git/config
für mich nicht mit Git 2.1.0 aktualisiert . Ich musste beide.gitmodules
und.git/config
manuell aktualisieren, bevorgit submodule sync --recursive
ich a ausführen konnte, damit mein Submodul remote aktualisiert wurde.git submodule update --init --recursive --remote
tatsächlich das Repository auf die neue Fernbedienung ändertMit diesen Befehlen wird die Eingabeaufforderung bearbeitet, ohne dass Dateien im lokalen Repository geändert werden
Im Blog finden Sie Screenshots: Ändern der URL / des Zweigs der GIT-Submodule in eine andere URL / einen anderen Zweig desselben Repositorys
quelle
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
In einfachen Worten, Sie müssen nur die .gitmodules-Datei bearbeiten, dann erneut synchronisieren und aktualisieren:
Bearbeiten Sie die Datei entweder über einen git-Befehl oder direkt:
oder nur:
dann erneut synchronisieren und aktualisieren:
quelle
git submodule update --init
hat für mich gearbeitet,--remote
scheint es an den KOPF des Remote Repo zu binden.Mit Git 2.25 (Q1 2020) können Sie es ändern .
Siehe " Git-Submodul-URL geändert " und den neuen Befehl
Ursprüngliche Antwort (Mai 2009, vor zehn Jahren)
Tatsächlich wurde im April 2009 ein Patch eingereicht , um die
gitmodule
Rolle zu klären .Die Gitmodule-Dokumentation enthält jetzt noch nicht:
Das bestätigt Jims Antwort ziemlich genau .
Wenn Sie diesem Tutorial zum Git-Submodul folgen , benötigen Sie ein "
git submodule init
", um die Submodul-Repository-URLs zu .git / config hinzuzufügen."
git submodule sync
" wurde im August 2008 hinzugefügt , um diese Aufgabe zu vereinfachen, wenn sich die URL ändert (insbesondere wenn die Anzahl der Submodule wichtig ist).Das mit diesem Befehl verknüpfte Skript ist einfach genug:
Das Ziel bleibt:
git config remote."$remote".url "$url"
quelle
.git/config
indem ich Folgendes tat:git config submodule."$submodule_name".url "$new_url"
was auch hier beschrieben wird .git submodule set-url [--] <path> <newurl>
?Was hat bei mir funktioniert (unter Windows mit der Git-Version 1.8.3.msysgit.0):
git submodule init
undgit submodule update
Nach all dem ist alles in dem Zustand, den ich erwarten würde. Ich kann mir vorstellen, dass andere Benutzer des Repositorys ähnliche Probleme haben werden, wenn sie zum Aktualisieren kommen - es wäre ratsam, diese Schritte in Ihrer Commit-Nachricht zu erläutern!
quelle
git submodule update
. Das Befolgen der anderen Antworten würde nichts daran ändern, was sich im./git/modules/external
Verzeichnis befindet. Wenn Sie also versuchen, ein Update durchzuführen, wird immer noch die falsche URL abgerufen.Bearbeiten Sie einfach Ihre .git / config- Datei. Zum Beispiel; Wenn Sie ein "gemeinsames" Submodul haben, können Sie dies im Supermodul tun:
quelle
git config --file=.gitmodules -e
öffnet den Standardeditor, in dem Sie den Pfad aktualisieren könnenquelle