Mit Git 2.25 (Q1 2020) können Sie ändern. es.
Siehe " Git-Submodul-URL geändert " und der neue Befehl
git submodule set-url [--] <path> <newurl>
(Auf der --
Trennzeichen, siehe " Doppelter Bindestrich als Signal, die Interpretation der Option zu beenden und alle folgenden Argumente wörtlich zu behandeln ")
Warnung: Hi-Angel Erwähnt in den Kommentaren (auch mit Git 2.31.1 getestet):
Man sollte vorsichtig sein mit git submodule set-url
weil es einen Fehler hat:
Wenn Sie in Ihrem .gitmodules
Datei sieht der Pfad wie folgt aus some-path
und dann führen Sie eine git submodule set-url some-path/ new-url
(beachten Sie den abschließenden Schrägstrich /
), dann wird der Befehl anstelle der Änderung des bestehenden Submoduls hinzufügen. eine andere.
Originalantwort (Mai 2009, vor zehn Jahren)
Eigentlich ein Patch wurde im April 2009 eingereicht zu klären gitmodule
Rolle.
Jetzt ist also die Gitmodul-Dokumentation noch nicht enthalten:
El .gitmodules
Datei, die sich im obersten Verzeichnis eines Git-Arbeitsbaums befindet, ist eine Textdatei mit einer Syntax, die den Anforderungen von -of linkgit:git-config 4 .
[NEU]:
Da diese Datei von Git verwaltet wird, verfolgt sie die +Einträge der Untermodule eines Projekts.
Die in dieser Datei gespeicherten Informationen werden als Hinweis auf die maßgebliche Version des in der Projektkonfigurationsdatei gespeicherten Datensatzes verwendet.
Benutzerspezifische Datensatzänderungen (z. B. zur Berücksichtigung von Unterschieden in den Submodul-URLs aufgrund von Netzwerksituationen) sollten in der Konfigurationsdatei vorgenommen werden, während Datensatzänderungen, die propagiert werden sollen (z. B. aufgrund einer Verlagerung der Submodulquelle), in dieser Datei vorgenommen werden sollten.
Das bestätigt ziemlich genau Jims Antwort .
Wenn Sie dies befolgen Git-Submodul-Anleitung Sie sehen, Sie brauchen einen " git submodule init
", um die URLs der Submodul-Repositorys zu .git/config hinzuzufügen.
" git submodule sync
" hat wurde im August 2008 hinzugefügt um diese Aufgabe bei URL-Änderungen zu erleichtern (insbesondere wenn die Anzahl der Untermodule wichtig ist).
Das Skript für die Verknüpfung mit diesem Befehl ist sehr einfach zu handhaben:
module_list "$@" |
while read mode sha1 stage path
do
name=$(module_name "$path")
url=$(git config -f .gitmodules --get submodule."$name".url)
if test -e "$path"/.git
then
(
unset GIT_DIR
cd "$path"
remote=$(get_default_remote)
say "Synchronizing submodule url for '$name'"
git config remote."$remote".url "$url"
)
fi
done
Das Ziel bleibt bestehen: git config remote."$remote".url "$url"