Я создал git-репозиторий с подмодулем в нем. Я могу сказать самому подмодулю изменить путь к удаленному репозиторию, но я не уверен, как сказать родительскому репозиторию, как изменить путь к удаленному репозиторию для подмодуля.
Я не удивлюсь, если мне не повезет, и мне придется что-то делать вручную, так как даже удаление подмодулей не так просто.
git
git-submodules
Эндрю Гримм
источник
источник
git submodule set-url [--] <path> <newurl>
Ответы:
Вы должны просто иметь возможность отредактировать
.gitmodules
файл, чтобы обновить URL, а затем запустить,git submodule sync
чтобы отразить это изменение в суперпроекте и вашей рабочей копии.источник
git submodule foreach -q git config remote.origin.url
чтобы увидеть «фактические» URL-адреса подмодулей.git/config
для меня, используя git 2.1.0. Мне пришлось обновить оба.gitmodules
и.git/config
вручную перед запуском, чтобы обновитьgit submodule sync --recursive
мой подмодуль.git submodule update --init --recursive --remote
который фактически меняет хранилище на новый пультЭти команды будут выполнять работу в командной строке без изменения каких-либо файлов в локальном хранилище.
Пожалуйста, посмотрите в блоге скриншоты: Изменение URL / ветви субмодуля GIT на другой URL / ветку того же репозитория
источник
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
Проще говоря, вам просто нужно отредактировать файл .gitmodules, затем выполнить повторную синхронизацию и обновить:
Отредактируйте файл с помощью команды git или напрямую:
или просто:
затем выполните повторную синхронизацию и обновление:
источник
git submodule update --init
работал для меня,--remote
кажется, привязать его к голове удаленного репо.С Git 2.25 (Q1 2020) вы можете изменить его.
См. " URL подмодуля Git изменен " и новая команда
Оригинальный ответ (май 2009 г., десять лет назад)
На самом деле, патч был представлен в апреле 2009 года для уточнения
gitmodule
роли.Так что теперь документация по gitmodule еще не включает:
Это в значительной степени подтверждает ответ Джима .
Если вы будете следовать этому учебнику по подмодулям git , то увидите, что вам нужно "
git submodule init
", чтобы добавить URL репозитория подмодулей в .git / config.«
git submodule sync
» был добавлен в августе 2008 года именно для того, чтобы упростить эту задачу при изменении URL (особенно, если важно количество субмодулей).Связать сценарий с этой командой достаточно просто:
Цель остается:
git config remote."$remote".url "$url"
источник
.git/config
, выполнив:git config submodule."$submodule_name".url "$new_url"
это также описано здесь .git submodule set-url [--] <path> <newurl>
?Что сработало для меня (в Windows, используя git версии 1.8.3.msysgit.0):
git submodule init
иgit submodule update
После всего этого все будет в том состоянии, которого я ожидаю. Я полагаю, что другие пользователи хранилища будут испытывать аналогичную боль при обновлении - было бы разумно объяснить эти шаги в вашем сообщении о коммите!
источник
git submodule update
. Следование другим ответам не изменило бы то, что было в./git/modules/external
директории, поэтому попытка обновления привела бы к тому, что он все еще вытягивал бы неправильный URL.Просто отредактируйте свой файл .git / config . Например; если у вас есть «общий» подмодуль, вы можете сделать это в супермодуле:
источник
git config --file=.gitmodules -e
открывает редактор по умолчанию, в котором вы можете обновить путьисточник