Как заменить подмодуль 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.
723   6  

6 ответов:

Если расположение (URL) подмодуля изменилось, то вы можете просто:

  1. изменить .gitmodule файл для использования нового URL
  2. выполнить git submodule sync

более полная информация может быть найдена в другом месте:

во-первых, удалите текущий подмодуль с помощью уже упомянутого метода здесь, который я включаю для удобства:

  • удалить соответствующий раздел из .gitmodules file
  • удалить соответствующий раздел из .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

    Ничего не найдено.