Как заменить подмодуль git на другой РЕПО?
как заменить подмодуль git другим репозиторием git?
в частности, у меня есть подмодуль:
- расположенном в
./ExternalFrameworks/TestFrameworkчто указывает на Git репозитория[email protected]:userA/TestFramework.git
- Я хотел бы сейчас указать на
[email protected]:userB/TestFramework.git.
проблема в том, что когда я удаляю подмодуль с помощью метода, описанного здесь, а затем повторно добавить его с помощью команды
git submodule add [email protected]:userB/TestFramework.git
я получаю эту ошибку:
A git directory for 'ExternalFrameworks/TestFramework' is found locally with remote(s):
origin [email protected]:userA/TestFramework.git
If you want to reuse this local git directory instead of cloning again from
[email protected]:userB/TestFramework.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
6 ответов:
Если расположение (URL) подмодуля изменилось, то вы можете просто:
- изменить
.gitmoduleфайл для использования нового URL- выполнить
git submodule syncболее полная информация может быть найдена в другом месте:
во-первых, удалите текущий подмодуль с помощью уже упомянутого метода здесь, который я включаю для удобства:
- удалить соответствующий раздел из
.gitmodulesfile- удалить соответствующий раздел из
.git/config- выполнить
git rm --cached path_to_submodule(без Слэша)- зафиксировать и удалить теперь не отслеживаемые файлы подмодуля
теперь добавьте новый подмодуль с
--nameфлаг. Это даст git альтернативное имя для ссылки в.git/configдля подмодуля, в координации с подмодуль, который был исторически сложилось, что вы еще хотите работать в вашу историю.так типа:
git submodule add --name UpdatedTestFramework [email protected]:userB/TestFramework.gitи вы получите подмодуль загружен на пути, который вы ожидаете.
эти команды будут выполнять работу в командной строке без изменения каких-либо файлов в локальном репозитории.
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git git config --file=.gitmodules submodule.Submod.branch Dev git submodule sync git submodule update --init --recursive --remote
что исправило это для меня было в корне вашего git РЕПО (не подмодуль), run
rm -rf .git/modules/yourmoduleзатем вы должны быть в состоянии добавить как обычно.
самый простой способ, который я нашел это:
git rm -rf [submodule_dir] git submodule add --name new_[submodule_name] [new_submodule_url] [submodule_dir]мне не понравилась идея изменить мой
.gitmodulesвручную. Я тоже писал немного блогпост об этом.
Если вы хотите изменить удаленный URL только для этого клона:
git config submodule."$submodule_name".url "$new_url"Это не повлияет на
.gitmodulesфайл в Родительском проекте, поэтому он не будет распространяться на других разработчиков.это описывается как "пользовательские изменения записи"здесь.
не выполнить
git submodule syncкак это будет сброшено на URL по умолчанию снова.
Comments