Как изменить удаленный репозиторий для подмодуля git?

В Git 2.25 (первый квартал git-submodules 2020 г.) вы можете изменить его.
См. «Git submodule url changed» и submodule новую команду

git submodule set-url [--]  

Предупреждение: Hi-Angel упоминает submodules in the comments (проверено даже с Git 2.31.1):

С git-commands git submodule set-url следует быть осторожным, потому git что в нем есть ошибка:

Если git-submodules внутри вашего файла .gitmodules путь submodules выглядит так: some-path, а затем вы git-submodules выполняете git submodule set-url some-path/ new-url (обратите внимание git на завершающую косую черту submodule /), тогда вместо изменения git-submodules существующего подмодуля команда submodules будет добавить еще один.


Исходный submodule ответ (май 2009 г., десять git-submodules лет назад)

Собственно, патч submodule has been submitted in April 2009 для уточнения роли gitmodule.

Итак, теперь git-submodules gitmodule documentation еще не включает:

Файл .gitmodules, расположенный git в каталоге верхнего уровня git рабочего дерева git, представляет submodule собой текстовый файл с синтаксисом, соответствующим submodules требованиям -of linkgit: git-config git-submodules 3.
[НОВОЕ]:
Поскольку этим git-submodules файлом управляет Git, он submodule отслеживает + записи подмодулей git проекта.
Информация, хранящаяся git в этом файле, используется submodules в качестве подсказки для git запуска авторитетной версии submodules записи, хранящейся в файле submodules конфигурации проекта.
Пользовательские git-commands изменения записей (например, для git-commands учета различий в URL-адресах submodules подмодулей из-за сетевых submodules ситуаций) должны быть внесены submodules в файл конфигурации, при этом должны быть внесены изменения записи (например, + из-за перемещения источника подмодуля) в этот файл.

Это git в значительной степени подтверждает git-commands Jim's answer.


Если вы последуете этому git git submodule tutorial, вы увидите, что вам нужен submodules «git submodule init» для добавления URL-адресов git-submodules репозитория подмодулей в submodule .git / config.

"git submodule sync" имеет git-submodules been added in August 2008 именно для того, чтобы упростить git-submodules эту задачу при изменении submodule URL-адреса (особенно, если submodules важно количество подмодулей).
Связать git-submodules сценарий с этой командой submodule достаточно просто:

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

Цель остается: git config remote."$remote".url "$url"

git

git-submodules

2022-11-07T00:44:46+00:00