Mit Git 2.25 (Q1 2020) können Sie es ändern .
Siehe " Git-Submodul-URL geändert " und den neuen Befehl
git submodule set-url [--] <path> <newurl>
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:
Die .gitmodules
Datei, die sich im obersten Verzeichnis eines Git-Arbeitsbaums befindet, ist eine Textdatei mit einer Syntax, die den Anforderungen von linkgit: git-config 1 entspricht .
[NEU]:
Da diese Datei von Git verwaltet wird, werden die + Datensätze der Submodule eines Projekts verfolgt.
In dieser Datei gespeicherte Informationen werden als Hinweis verwendet, um die autorisierende Version des in der Projektkonfigurationsdatei gespeicherten Datensatzes zu aktivieren.
Benutzerspezifische Datensatzänderungen (z. B. um Unterschiede in den Submodul-URLs aufgrund von Netzwerksituationen zu berücksichtigen) sollten an der Konfigurationsdatei vorgenommen werden, während zu propagierende Datensatzänderungen (z. B. + aufgrund einer Verlagerung der Submodulquelle) an dieser Datei vorgenommen werden sollten .
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:
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: git config remote."$remote".url "$url"
git submodule set-url [--] <path> <newurl>