Изменение удаленного хранилища субмодуля git для всех коммитов в истории git - PullRequest
0 голосов
/ 26 апреля 2020

Как я могу изменить удаленный URL субмодуля git, не нарушая историю коммитов? В настоящее время, если я извлекаю старые коммиты, в моем подмодуле, похоже, старый удаленный URL-адрес ведьмы больше не существует.

Мой рабочий процесс:

  1. Клонировать репо с коммитом A, B
  2. git обновление субмодуля --init
  3. Изменение URL субмодуля
  4. Pu sh .gitmodules на удаленный (Commit C)

  5. Клонировать репо с коммитом A, B, C

  6. Переключиться на коммит A
  7. git обновление субмодуля --init -> FAILES

-> требуется также новый удаленный URL подмодуля, но все еще старый URL в .gitmodules

Кажется, что git submodule update --init все еще пытается использовать старый удаленный URL

Если также пытался использовать git submodule update, как предложено, но я также получил ошибку:

The Git repository with name or identifier OLD_REPO_NAME does not exist or you do not have permissions for the operation you are attempting.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Давайте попробуем другой подход. Вместо замены URL-адресов в файлах конфигурации заменяйте URL-адреса на лету:

git config --global url.<NEW-URL>.insteadOf <OLD-URL>

См. git help config о url.<base>.insteadOf.

0 голосов
/ 26 апреля 2020

коммиты не привязаны к пультам. Как только вы изменили пульт, изменение вступает в силу для всех коммитов, старых и новых.

Чтобы изменить URL для подмодуля, вам необходимо:

  • изменить URL в файле .gitmodules в root суперпроекта;
  • запустите git submodule sync, чтобы скопировать изменение в .git/config
  • cd в подмодуль, и запустите git remote set-url, чтобы изменить URL в субмодуль.

Когда вы извлекаете старый коммит в суперпроекте, вы получаете старый .gitmodules, но это не имеет значения - git не использует URL-адреса из .gitmodules - он использует URL-адреса от .git/config. git sync копирует URL-адреса с .gitmodules на .git/config. Поэтому после проверки старого коммита со старым .gitmodules НЕ запускайте git sync и git продолжит использовать новые URL-адреса с .git/config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...