J'ai un projet qui a un sous-module à lib/three20
Mon .gitmodule
fichier ressemble à ceci:
[submodule "lib/three20"]
path = lib/three20
url = git://github.com/facebook/three20.git
J'ai cloné cela dans le passé sans erreurs ( git submodule init
suivi d'un git submodule update
) et cela fonctionne depuis un certain temps.
J'ai essayé de cloner cela sur une nouvelle machine, et maintenant je reçois cette erreur git submodule init
:
No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'
Ce chemin n'est qu'un dossier vide dans Xcode que j'utilise pour héberger les projets de l'autre répertoire. Cela ne fait pas partie du .gitmodules
fichier, donc je ne vois pas d'où vient ce chemin.
Des idées?
git
git-submodules
Ben Scheirman
la source
la source
.git
dossier. Faire ungrep -r "Classes/Support/Three20" *.*
ne donne aucun résultat non plusgit ls-tree HEAD Classes/Support
, et s'il dit que Three20 est un commit, il y a un gitlink là. Si tel est le cas, suivez les instructions appropriées de la question VonC liée ci-dessus pour le transformer en un sous-module approprié ou le transformer en contenu régulièrement suivi.Réponses:
Suite à rajibchowdhury « de la réponse (upvoted), utiliser
git rm
la commande qui est conseillé est de suppression de la mention spéciale de l'indice indiquant un sous - module (a « dossier » avec un mode spécial160000
).Si ce chemin d' entrée spécial n'est pas référencé dans le
.gitmodule
(comme 'Classes/Support/Three20
' dans la question d'origine), vous devez le supprimer, afin d'éviter le message d'erreur " Aucun mappage de sous-module trouvé.gitmodules
pour le chemin ".Vous pouvez vérifier toutes les entrées de l'index qui font référence à des sous-modules:
Réponse précédente (novembre 2010)
Il est possible que vous n'ayez pas déclaré correctement votre sous-module initial (c'est-à-dire sans queue '/' à la fin, comme décrit dans mon ancienne réponse , même si votre
.gitmodule
a des chemins qui semblent corrects).Ce fil mentionne:
Évidemment, ne supprimez pas votre
.gitmodules
fichier principal , mais prenez soin d'autres.gitmodules
fichiers supplémentaires dans votre arborescence de travail.Toujours dans le sujet de "l'initialisation incorrecte des sous-modules", Jefromi mentionne des sous-modules qui sont en fait des gitlinks.
Voir Comment suivre le contenu non suivi? afin de convertir un tel répertoire en un vrai sous-module.
la source
git rm xxx
(sans barre oblique)git rm --cached
vous permet de le conserver sur le disque tout en le supprimant de l'index..gitmodule
référençant ces entrées, alors stackoverflow.com/a/16162000/6309 . Sinon, un simplegit rm afolder
(pas de fuite / barre oblique)Aucun mappage de sous-module trouvé dans .gitmodules pour le chemin 'OtherLibrary / MKStore' lorsque
Je ne savais pas pourquoi l'erreur s'est produite. Après avoir passé une minute et trouvé la réponse dans stackoverflow.
puis mettez à jour le sous-module à nouveau. Ça marche bien.
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
la source
git submodule sync | grep "mapping found"
alorsgit rm
et encoregit submodule sync
. Problème disparu!.Lorsque j'utilise SourceTree pour faire les choses, il crachera ce message.
Le message que j'ai rencontré:
Mon scénario est que j'ai mal appliqué le répertoire du projet qui contient le dossier .git .
SourceTree considérait ce dossier comme un sous-module git, mais en fait pas.
Ma solution consiste à utiliser la ligne de commande pour le supprimer.
enlever les ordures dans git et les garder propres.
la source
J'ai résolu ce problème pour moi. Au départ, j'ai essayé de faire ceci:
Il s'avère que la spécification de l'option --branch ne doit pas être utilisée si vous souhaitez cloner la branche principale . Il jette cette erreur:
Chaque fois que vous essayez de faire un
Cette erreur sera levée:
Et les lignes nécessaires dans les modules .git ne sont jamais ajoutées.
La solution pour moi était donc la suivante:
la source
Je viens de frapper cette erreur après avoir essayé de "git submodule init" sur une nouvelle caisse de mon repo. Il s'avère que j'avais spécifié le sous-dossier du module avec le mauvais cas au départ. Comme je suis sur un Mac avec un système de fichiers sensible à la casse (hurr), il échouait. Par exemple:
réussit mais le problème est que sur le disque le chemin est
Ce que je ne comprends pas, c'est pourquoi git lance le module dans un mauvais dossier (en ignorant la casse incorrecte dans ma commande) mais fonctionne ensuite correctement (en échouant) avec les commandes suivantes.
la source
Tout
git rm subdir
ira bien. qui supprimera le sous-répertoire en tant qu'index.la source
Je viens d'avoir ce problème. Pendant un certain temps, j'ai essayé les conseils sur la suppression du chemin d'accès, git suppression du chemin d'accès, la suppression des .gitmodules, la suppression de l'entrée du .git / config, l'ajout du sous-module en arrière, puis la validation et la modification. C'était déroutant car cela ne ressemblait à aucun changement quand j'ai fait "git commit -a" alors j'ai essayé de pousser juste la suppression, puis de pousser la réédition pour que ça ressemble à un changement.
Après un certain temps, j'ai remarqué par accident qu'après avoir tout supprimé, si je lançais "git submodule update --init", il y avait un message sur un nom spécifique auquel git n'aurait plus dû faire référence: le nom du référentiel le sous-module était un lien vers, pas le nom du chemin vers lequel il était extrait. Grepping a révélé que cette référence était en .git / index. J'ai donc lancé "git rm --cached repo-name", puis réajouté le module. Lorsque j'ai validé cette fois, le message de validation incluait une modification indiquant qu'il supprimait cet objet inattendu. Après cela, ça fonctionne bien.
Je ne sais pas ce qui s'est passé, je suppose que quelqu'un a mal utilisé la commande git submodule, inversant peut-être les arguments. Ça aurait pu être moi même ... J'espère que ça aide quelqu'un!
la source
dans le fichier .gitmodules , j'ai remplacé la chaîne
avec
et ça a résolu! - -
la source
Le mappage de dossier peut être trouvé dans le
.git/modules
dossier (chacun a unconfig
fichier en référence au sienworktree
), assurez-vous donc que ces dossiers correspondent à la configuration dans.gitmodules
et.git/config
.A donc
.gitmodules
le bon chemin:et
.git/modules/<path>/config
dans la[core]
section que vous avez le droit chemin à votre<path>
, par exempleSi le bon dossier
.git/modules
est manquant, vous devez aller dans le répertoire de votre sous-module et essayergit reset HEAD --hard
ougit checkout master -f
. Si cela ne vous aide pas, vous souhaiterez probablement supprimer toutes les références au sous-module cassé et l'ajouter à nouveau, puis voir: Renommer un sous-module git .la source
Scénario: changer le sous-module du répertoire dirA-xxx en un autre répertoire dirB-xxx
courir
git submodule status
si erreur de retour: aucun mappage de sous-module trouvé dans .gitmodules pour le chemin dirA-xxx. Cela est dû au fait que dirA-xxx n'existe pas, mais il est toujours suivi par git. Mettez à jour l'index git en:
git rm --cached dirA-xxx
Essayez avec
git submodule foreach git pull
. Je ne suis pas passé par l'étude réelle de la structure du sous-module git, donc les étapes ci-dessus peuvent casser quelque chose. Néanmoins, en passant par les étapes ci-dessus, les choses semblent bonnes pour le moment. Si vous avez des idées ou des étapes appropriées pour faire avancer les choses, partagez-les ici. :)la source
Habituellement, git crée un répertoire caché dans le répertoire racine du projet (.git /)
Lorsque vous travaillez sur un CMS, il est possible d'installer des modules / plugins portant le répertoire .git / avec les métadonnées de git pour le module / plugin spécifique
La solution la plus rapide consiste à trouver tous les répertoires .git et à ne conserver que votre répertoire de métadonnées root git. Si vous le faites, git ne considérera pas ces modules comme des sous-modules de projet.
la source
Après avoir regardé mon
.gitmodules
, il s'est avéré que j'avais une lettre majuscule où je n'aurais pas dû. Gardez donc à l'esprit que les.gitmodules
répertoires sont sensibles à la cassela source
.gitmodules
place?Dans mon cas, l'erreur était probablement due à une fusion incorrecte entre .gitmodules sur deux branches avec des configurations de sous-modules différentes. Après avoir pris les suggestions de ce forum, j'ai résolu le problème de modification manuelle du fichier .gitmodules, l'ajout de l'entrée de sous-module manquante est assez facile. Après cela, la commande git submodule update --init --recursive a fonctionné sans problème.
la source
Le problème pour nous était que des entrées de sous-module en double avaient été ajoutées dans .gitmodules (probablement à partir d'une fusion). Nous avons recherché le chemin dont git se plaignait dans .gitmodules et avons trouvé les deux sections identiques. La suppression d'une des sections a résolu le problème pour nous.
Pour ce que ça vaut, git 1.7.1 a donné l'erreur "no submodule mapping" mais git 2.13.0 n'a pas semblé s'en soucier.
la source