Отображение подмодулей не найдено.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
- переместить dirA-xxx в dirB-xxx
- изменение входа в систему .gitmodules использовать dirB-xxx
- изменение входа в систему .git / config для использования dirB-xxx
- изменить .git / modules/dirA-xxx / config для отражения правильного каталога
- изменить dirA-xxx/.git, чтобы отразить правильный каталог
-
выполнить
git submodule status
Если вернуться ошибка: отображение подмодулей не найдено .gitmodules для пути dirA-xxx. Это связано с тем, что dirA-xxx не существует, но он все еще отслеживается 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, похоже, не заботился.