Отображение подмодулей не найдено.gitmodule для пути, который не является подмодулем

у меня есть проект, который имеет субмодуль на lib/three20

мой

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 реж.
Если это устраняет проблему, проверьте и сделайте то же самое на своей рабочей копии круиза.

очевидно, не удаляйте свой main .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

мой сценарий-я неправильно применил каталог проекта, содержащий .git.
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 git@github.com:user/project.git MyApp/Resources/Project
Cloning into 'MyApp/Resources/Project'

успешно, но беда в том, что на диске путь

Myapp/Resources/Project

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


просто была эта проблема. Некоторое время я пробовал совет об удалении пути, git удаление пути, удаление .gitmodules, удаление записи из .git / config, добавляя подмодуль назад, затем фиксируя и нажимая изменение. Это было озадачивающе, потому что это выглядело как без изменений, когда я сделал "git commit-a", поэтому я попытался нажать только удаление, а затем нажать чтение, чтобы оно выглядело как изменение.

через некоторое время я случайно заметил, что после удаления всего, если я запустил "git submodule update --init", у него было сообщение об определенном имени, на которое git больше не должен был ссылаться: имя репозитория, на который ссылался подмодуль, а не имя пути, на которое он его проверял. Применение grep к показал, что эта ссылка была .git / index. Поэтому я запустил "git rm --cached repo-name", а затем прочитал модуль. Когда я совершил это время, сообщение фиксации включало изменение, что оно удаляло этот неожиданный объект. После этого он работает штраф.

Не уверен, что произошло, я предполагаю, что кто-то неправильно использовал команду подмодуля git, возможно, изменив аргументы. Мог бы быть даже я... Надеюсь, это кому-то поможет!


отображение папки можно найти в (каждого со ссылкой на worktree), поэтому убедитесь, что эти папки соответствуют конфигурации в .gitmodules и .git/config.

так .gitmodules есть правильный путь:

[submodule "<path>"]
  path = <path>
  url = git@github.com: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

  1. переместить dirA-xxx в dirB-xxx
  2. изменение входа в систему .gitmodules использовать dirB-xxx
  3. изменение входа в систему .git / config для использования dirB-xxx
  4. изменить .git / modules/dirA-xxx / config для отражения правильного каталога
  5. изменить dirA-xxx/.git, чтобы отразить правильный каталог
  6. выполнить git submodule status

    Если вернуться ошибка: отображение подмодулей не найдено .gitmodules для пути dirA-xxx. Это связано с тем, что dirA-xxx не существует, но он все еще отслеживается git. Обновите индекс git по: git rm --cached dirA-xxx

    попробовать git submodule foreach git pull. Я не прошел через фактическое изучение структуры подмодуля git, поэтому выше шаги могут что-то сломать. Тем не менее, проходя через вышеуказанные шаги, все выглядит хорошо на данный момент. Если у вас есть какое-либо понимание или правильные шаги, чтобы сделать это, поделитесь им здесь. :)


просто git rm subdir будет ОК. это удалит subdir в качестве индекса.


в файле .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, похоже, не заботился.