не удается добавить подмодуль git в репозиторий

(преимущественно вопрос Git, но может иметь отношение к другим пользователям PyroCMS)

у меня есть локальный репозиторий PyroCMS-РЕПО является клоном вилки github основного проекта. У меня также есть модуль PyroCMS, который также является локальным клоном вилки github это.

Я поместил их обоих в отдельные каталоги.

~/Dropbox/websites/pyrocmscommunity-test/
~/Dropbox/github/PyroDatabase/

Я хочу добавить PyroDatabase как субмодуль of pyrocmscommunity-тест, поэтому я могу вытаскивать обновления из github,отслеживать собственные изменения и т. д.

Я попытался сделать это, поднявшись на вершину рабочего дерева и сделав:

git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/

но он не был завершен должным образом:

Cloning into 'addons/shared_addons/modules/database'...
ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

Я не понимаю этого, поскольку я не указывал SSH-соединение, я просто хотел использовать локальное РЕПО. Что он пытается подключиться, и почему?

кроме того, теперь, когда я повторяю команду, я получаю это:

'addons/shared_addons/modules' already exists in the index

но я не понимаю этого, так как нет .gitmodules файл и никаких упоминаний о файлах модулей в .gitconfig либо.

что я делаю неправильно и как мне сбросить вещи?

спасибо, Уильям!--9-->

2 ответов


при указании относительных URL-адресов для местоположения подмодуля Git принимает его относительно origin (здесь GitHub) URL текущего проекта, а не относительно местоположения проекта в файловой системе. Это связано с тем, что подмодуль является постоянным указателем на удаленное местоположение. Здесь Git пытается связаться с исходным репозиторием github с двумя уровнями вверх, что является неправильным URL-адресом.

Что касается второй ошибки Git создал запись в промежуточной области вашего индекса, и она должна быть удалено (не проставлено) с помощью

git rm -r addons/shared_addons/modules

затем повторите попытку с абсолютным путем к вашему клону:

git submodule add $HOME/Dropbox/github/PyroDatabase/ addons/shared_addons/modules/

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


какую версию git вы используете? Вероятно, вы не сможете запустить команду снова, так как указанная вами структура каталогов была поэтапной. Вы можете сбросить такие вещи (будьте осторожны с этой командой):

$ git status # check what has been changed
$ git reset --hard HEAD # destroy all working copy changes

действительно полезный способ отладки того, что происходит с git, - установить GIT_TRACE=1. Итак, попробуйте запустить команду еще раз, как только вы очистите вот так:

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/