2013-03-05 2 views
1

У меня есть проект, в котором я добавил подмодуль Git к вилке репо, которое устарело. Вместо того, чтобы указывать на эту вилку, я решил изменить ссылку на подмодуль, чтобы вместо этого указать на исходное репо.Проблемы с подмодулями Git - изменение базового адреса репо

Я отредактировал файл .gitmodules, чтобы отобразить новую ссылку и пропустил (а) git submodule init и git submodule update --recursive Однако никакого эффекта нет, я пропустил здесь шаг?

+1

Вам может потребоваться вручную изменить URL в '.git/config' вашего субмодуля. – neevek

+0

Отличная находка! См. Мои комментарии к ответу @ VonC ниже. –

ответ

1

neevekmentions.git/config и документация git config подтверждает:

submodule..path submodule..url submodule..update

Путь в этом проекте, URL, а также обновление стратегия для подмодуля.
Эти переменные изначально заселены git submodule init; изменить их, чтобы переопределить URL-адрес и другие значения, найденные в файле .gitmodules.

Итак:

  • изменяя значения в одиночку .gitmodules недостаточно (URL-адрес в .git/config будет иметь преимущество).
  • git submodule init, как упоминается в документации, не изменяет существующей информации в .git/config (и это объясняет, почему ваши команды не имели видимого эффекта).
    Затем вы можете настроить URL-образы субмодуля в .git/config для своей локальной настройки и перейти к git submodule update.

Я лично считаю, это дублирование URL-адрес немного запутанным ...

+0

Я пробовал этот подход, и после обновления URL-адреса 'config' в исходном репо, я все еще не могу получить' git subodule update' для работы. Действительно приятно найти, хотя. –

+0

Что еще хуже, я также выполнил следующие шаги: http://stackoverflow.com/questions/14404704/how-do-replace-a-git-submodule-with-another-repo и 'git subodule sync' doesn Не работай. Git просто действует как полный git сегодня (извините, не мог мне помочь) –

Смежные вопросы