2012-05-02 2 views
6

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

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

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

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

Я хочу добавить PyroDatabase как субмодуля из 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 либо.

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

Спасибо, Уильям

+0

Странно. Работает на меня. Я также попытался клонировать локальный репозиторий, который не синхронизирован с его удаленным репозиторием github, при небольшой вероятности, что клонирование локального соединения будет подключаться к его удаленному ... но это тоже сработало. – GoZoner

ответ

15

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

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

git rm -r addons/shared_addons/modules 

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

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

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

+1

+1 для чтения всего абзаца из документов на подмодуле git add. – djs

+0

Спасибо - теперь я понятнее. Также найдены подмодули [глава] (http://git-scm.com/book/en/Git-Tools-Submodules) в Git Book. –

2

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

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

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

$ GIT_TRACE=1 git submodule add ../../github/PyroDatabase/ addons/shared_addons/modules/ 
Смежные вопросы