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, которую вы используете.
- Если есть, измените
url
запись в[submodule "<dirname>"]
раздел.gitmodules
файл. - Если есть, измените
url
запись в[submodule "<dirname>"]
раздел.git/config
файл. - Изменить
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