Suivant rajibchowdhury 's réponse (upvoted), utiliser git rm
qui est conseillée est pour supprimer le entrée spéciale dans l'index indiquant un sous-module (un "dossier" avec un mode spécial 160000
).
Si cette entrée spéciale chemin n'est pas référencée dans le .gitmodule
(comme ' Classes/Support/Three20
dans la question initiale), vous devez alors le supprimer, afin d'éviter le " Aucun mappage de sous-module trouvé dans .gitmodules
pour le chemin Message d'erreur ".
Vous pouvez vérifier toutes les entrées de l'index qui font référence à des submodules :
git ls-files --stage | grep 160000
Réponse précédente (novembre 2010)
Il est possible que vous n'ayez pas déclaré votre sous-module initial correctement (c'est-à-dire sans queue '/' à la fin, comme décrit dans la section mon ancienne réponse même si votre .gitmodule
a des chemins qui y sont bien).
Ce fil mentions :
obtenez-vous la même erreur en exécutant "git submodule init" à partir d'un nouveau clone ?
Si c'est le cas, vous avez un problème.
Si vous n'avez pas de submodules, supprimez .gitmodules
et toute référence à des sous-modules dans .git/config, et s'assurer que le répertoire Pikimal n'a pas de fichier .git
dir en elle.
Si cela résout le problème, vérifiez et faites de même sur votre copie de travail de croisière.
Évidemment, ne supprimez pas votre principal .gitmodules
mais s'occupe d'autres éléments supplémentaires .gitmodules
dans votre arbre de travail.
Toujours dans le sujet de "l'initialisation incorrecte du sous-module", Jefromi mentionne des submodules qui sont en fait des gitlinks.
Voir Comment suivre le contenu non suivi ? afin de convertir un tel répertoire en un véritable sous-module.
1 votes
Il semble que vous ayez réussi à ajouter ce chemin comme un lien git - un sous-module est une combinaison d'un lien git et d'entrées dans les fichiers .gitmoddules et .git/config. Il y a eu une question récente à ce sujet ; j'essaie de la retrouver...
10 votes
@Jefromi : stackoverflow.com/questions/4161022/ ?
0 votes
@Jefromi - Je ne trouve aucune mention de ce chemin nulle part dans la
.git
dossier. Faire ungrep -r "Classes/Support/Three20" *.*
ne donne aucun résultat non plus2 votes
@Ben : Pourquoi cherchez-vous cela ? texte dans le dossier .git ? Ce n'est pas comme ça que Git stocke le contenu. Si vous voulez vraiment vérifier ce que git pense être, essayez
git ls-tree HEAD Classes/Support
et si ça dit que Three20 est un commit, il y a un lien git là. Si c'est le cas, suivez les instructions appropriées de la question que VonC a liée ci-dessus, soit pour en faire un sous-module approprié, soit pour en faire un contenu suivi régulièrement.0 votes
@Jefromi - Merci cette commande a permis d'éclaircir le problème. Je ne sais toujours pas comment il a été introduit, mais j'ai supprimé ce chemin et tout a recommencé à fonctionner.
2 votes
Pour les futurs visiteurs, si votre problème est lié à un sous-module supprimé et qu'Heroku génère l'erreur, installez heroku-repo à partir de github.com/heroku/heroku-repo et heroku repo:reset -a nom de l'application
0 votes
J'ai lutté contre des problèmes de sous-module pendant deux jours. La percée est venue quand j'ai trouvé ceci : forums.developer.apple.com/thread/13102 . En fait, Xcode, et peut-être d'autres applications, ont du mal à développer les url contenant '~'. Une fois que j'ai changé ssh://username@server.remoteHost.com/~/git/MyRepo.git en ssh://username@server.remoteHost.com/home/username/git/MyRepo.git (regardez le chemin réel sur votre serveur), toutes les bizarreries ont disparu en dix minutes. Voir aussi stackoverflow.com/questions/32833100/