git: изменить происхождение клонированного субмодуля

Я создал проект submodule и положи это на Github.

Я создал другой проект, supermodule, а затем сделал это:

cd supermodule
git init
mkdir lib
git clone git://github.com/tandu/submodule lib/submodule
git submodule add ./lib/submodule lib/submodule

Это работало нормально, но на веб-сайте он не может найти ссылку на субмодуль при просмотре файлов (на самом деле он просто говорит "Загрузка данных" навсегда). Сама папка субмодуля имеет правильную origin,

Видимо, то, что я должен был сделать, было

...
mkdir lib
git submodule add git://github.com/tandu/submodule lib

... но сейчас уже слишком поздно. Как правильно настроить подмодуль в этом проекте? origin?

2 ответа

Решение

По-видимому, это очень сильно зависит от версии git, которую вы используете.

  1. Если есть, измените url запись в [submodule "<dirname>"] раздел .gitmodules файл.
  2. Если есть, измените url запись в [submodule "<dirname>"] раздел .git/config файл.
  3. Изменить url в конфигурации самого подмодуля. Расположение config Файл зависит от версии. Старые версии имели это в <dirname>/.git/configновые в .git/modules/<dirname>/config, Тем не менее, вы всегда можете использовать следующую команду:
cd <dirname>
git config remote.origin.url <new_url>

В другом вопросе я нашел ответ для более современной версии Git (2.25)

git submodule [--quiet] set-url [--] <path> <newurl>

Предположим, что у вас есть подмодуль в каталоге external/foo-libкакое происхождение https://github.com/example-user/foo-lib.gitи вы хотите поменять его на свой форк https://github.com/your-account/foo-lib.gitзатем в корневом каталоге типа проекта git:

git submodule set-url external/foo-lib https://github.com/your-account/foo-lib.git

Другие вопросы по тегам