14 ответов:
после rajibchowdhury ' s ответ (много голосов), использовать
git rmкоманда, которая рекомендуется для удаления специальная запись в индексе, указывающем на подмодуль ("папка" со специальным режимом160000).если эта специальная запись путь не упоминается в
.gitmodule(как 'Classes/Support/Three20в исходный вопрос), то вам нужно удалить его, чтобы избежать "отображение подмодулей не найдено в.gitmodulesна пути" сообщение об ошибке.вы можете проверить все записи в индексе, которые ссылаются на подмодули:
git ls-files --stage | grep 160000
предыдущий ответ (ноябрь 2010 года)
возможно, что вы не объявили свой начальный подмодуль правильно (т. е. без хвоста ' / ' в конце, как описано в мой старый ответ, хотя
.gitmoduleимеет пути, которые выглядят нормально в он.)этой теме отмечает:
вы получаете ту же ошибку при запуске 'git submodule init' из свежего клона?
Если это так, то у вас что-то не так.если у вас нет подмодулей, удалить
.gitmodules, и любые ссылки на подмодули в .git / config, и убедитесь, что Pikimal dir не имеет.gitреж в нем.
Если это устраняет проблему, проверьте и сделайте то же самое на своей рабочей копии круиза.очевидно, не удаляйте свой основной
.gitmodulesфайл, но присмотрите за другими дополнительными.gitmodulesфайлы в вашем рабочем дереве.
еще в теме "неправильная инициализация подмодуль", Jefromi упоминает подмодули, которые на самом деле являются gitlinks.
посмотреть как отслеживать неотслеживаемый контент? чтобы преобразовать такой каталог в реальный подмодуль.
отображение подмодулей не найдено .gitmodules для пути 'OtherLibrary / MKStore' когда
$ git submodule update --initЯ не знал, почему произошла ошибка. Потратив минуту и нашел ответ в stackoverflow.
$ git rm --cached OtherLibrary/MKStoreи затем снова обновите подмодуль. Он работает нормально.
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
когда я использую SourceTree, чтобы сделать материал, он выплюнет это сообщение.
Сообщение, с которым я столкнулся:git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree submodule update --init --recursive No submodule mapping found in .gitmodules for path 'SampleProject/SampleProject' Completed with errors, see aboveмой сценарий я неправильно применил каталог проекта содержит .ГИТ.
SourceTree рассматривал эту папку как подмодуль git, но на самом деле нет.мое решение-это использовать командную строку, чтобы удалить его.
$ git rm -r SampleProject --cached $ git commit -m "clean up folders"удалите мусор в git и держите его в чистоте.
я решил эту проблему для меня. Изначально я пытался сделать это:
git submodule add --branch master [URL] [PATH_TO_SUBMODULE]как оказалось, спецификация параметра --branch не должна использоваться, если вы хотите клонировать главную ветвь. Он выдает эту ошибку:
fatal: Cannot force update the current branch. Unable to checkout submodule '[PATH_TO_SUBMODULE]'каждый раз, когда вы пытаетесь сделать
git submodule syncэта ошибка будет брошен:
No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'и линии, необходимые В.gitmodules не добавил.
так что решение для меня было это:
git submodule add [URL] [PATH_TO_SUBMODULE]
Я просто ударил эту ошибку после попытки "git submodule init" на новой проверке моего РЕПО. Оказывается, я изначально указал подпапку модуля с неправильным случаем. Поскольку я нахожусь на Mac с чувствительной к регистру файловой системой (hurr), это не удалось. Например:
git submodule add [email protected]:user/project.git MyApp/Resources/Project Cloning into 'MyApp/Resources/Project'успешно, но беда в том, что на диске путь
Myapp/Resources/ProjectЯ не понимаю, почему git инициализирует модуль в неправильную папку (игнорируя неправильный случай в моей команде), но затем работает правильно (путем сбоя) с последующими командами.
просто была эта проблема. Некоторое время я пробовал советы по удалению пути, git удаляя путь, удаляя .gitmodules, удаление записи из .git / config, добавление подмодуля обратно, а затем фиксация и нажатие изменения. Это было озадачивающе, потому что это выглядело без изменений, когда я делал "git commit-a", поэтому я попытался нажать только удаление, а затем нажать readdition, чтобы сделать его похожим на изменение.
через некоторое время я случайно заметил, что после удаления всего, если я запустил "git submodule update --init", у него было сообщение о конкретном имени, на которое git больше не должен был ссылаться: имя репозитория, на который ссылался подмодуль, а не имя пути, на которое он его проверял. Применение grep к показал, что эта ссылка была .git / index. Поэтому я запустил "git rm -- cached repo-name", а затем прочитал модуль. Когда я совершил это время, сообщение о фиксации включало изменение, которое удаляло этот неожиданный объект. После этого он работает штраф.
Не уверен, что произошло, я предполагаю, что кто-то неправильно использовал команду подмодуля git, возможно, изменив аргументы. Может быть, даже я... Надеюсь, это кому-то поможет!
сопоставление папок можно найти в
.git/modulesпапка (у каждого есть со ссылкой наworktree), поэтому убедитесь, что эти папки соответствуют конфигурации в.gitmodulesи.git/config.так
.gitmodulesесть правильный путь:[submodule "<path>"] path = <path> url = [email protected]:foo/bar.gitи
.git/modules/<path>/configна[core]раздел у вас есть правильный путь к вашей<path>, например,[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true worktree = ../../../<path>если правая папка в
.git/modulesотсутствует, то вы должны пойти в свой подмодуль dir и попробоватьgit reset HEAD --hardилиgit checkout master -f. Если это не поможет, вы, вероятно, хотите удалить все ссылки на сломанный подмодуль и добавить его снова, затем см.:переименовать подмодуль git.
сценарий: изменение подмодуля из каталога dirA-xxx в другой каталог dirB-xxx
- переместить dirA-xxx в dirB-xxx
- изменение входа в систему .gitmodules использовать dirB-xxx
- изменение входа в систему .git / config для использования dirB-xxx
- изменить .git / modules/dirA-xxx / config для отражения правильного каталога
- изменить dirA-xxx/.git, чтобы отразить правильный каталог
выполнить
git submodule statusЕсли вернуться ошибка :отображение подмодулей не найдено.gitmodules для Дира-ХХХ пути. Это объясняется Дира-ХХХ не существует, но она по-прежнему отслеживаются с помощью Git. Обновите индекс git с помощью:
git rm --cached dirA-xxxпопробовать
git submodule foreach git pull. Я не проходил фактического изучения структуры подмодуля git, поэтому выше шаги могут что-то сломать. Тем не менее, пройдя выше шаги, все выглядит хорошо на данный момент. Если у вас есть какие-либо идеи или правильные шаги, чтобы сделать это, поделитесь им здесь. :)
в файле .gitmodules, Я заменил строку
"path = thirdsrc\boost"С
"path = thirdsrc/boost",и это решено! - -
обычно git создает скрытый каталог в корневом каталоге проекта (.git/)
когда вы работаете на CMS, его можно установить модули / Плагины переноски .git / каталог с метаданными git для конкретного модуля / плагина
самое быстрое решение-найти все .каталоги git и храните только корневой каталог метаданных git. Если вы это сделаете, ГИТ не будет рассматривать эти модули как подмодули проекта.
посмотрев на мое
.gitmodules, оказалось, что у меня была заглавная буква, где я не должен был. Так что имейте в виду,.gitmodulesкаталоги регистр
в моем случае ошибка была скорее всего из-за неправильного слияния .gitmodules на двух ветвях с различными конфигурациями подмодулей. После принятия предложений с этого форума, я решил проблему редактирования вручную .файл gitmodules, добавление отсутствующей записи подмодуля довольно легко. После этого команда обновление подмодуля git --init --рекурсивный работал без проблем.
проблема для нас заключалась в том, что были добавлены повторяющиеся записи подмодуля .gitmodules (вероятно, от слияния). Мы искали путь, на который жаловался ГИТ .gitmodules и нашел два одинаковых раздела. Удаление одного из разделов решило проблему для нас.
для чего это стоит, git 1.7.1 дал ошибку "нет отображения подмодуля", но git 2.13.0, похоже, не заботился.
Comments