417 Stimmen

Keine Submodulzuordnung in .gitmodule für einen Pfad gefunden, der kein Submodul ist

Ich habe ein Projekt, das ein Submodul unter lib/three20

Meine .gitmodule Datei sieht wie folgt aus:

[submodule "lib/three20"]
    path = lib/three20
    url = git://github.com/facebook/three20.git

Ich habe dies in der Vergangenheit ohne Fehler geklont, ( git submodule init gefolgt von einer git submodule update ) und es funktioniert schon seit einer Weile.

Ich habe versucht, diese auf einen neuen Rechner zu klonen, und jetzt erhalte ich diesen Fehler bei git submodule init :

No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'

Dieser Pfad ist nur ein leerer Ordner in Xcode, den ich verwende, um die Projekte aus dem anderen Verzeichnis unterzubringen. Er ist nicht Teil des .gitmodules Datei, also weiß ich nicht, woher der Pfad kommt.

Irgendwelche Ideen?

502voto

rajibchowdhury Punkte 4964

Keine Submodul-Zuordnung in .gitmodules für Pfad 'OtherLibrary/MKStore' gefunden wenn

$ git submodule update --init

Ich wusste nicht, warum der Fehler auftrat. Nachdem ich eine Minute damit verbracht habe und die Antwort im Stackoverflow gefunden habe.

$ git rm --cached OtherLibrary/MKStore

und aktualisieren Sie dann das Submodul erneut. Es funktioniert gut.

http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules

373voto

VonC Punkte 1117238

Unter rajibchowdhury 's Antwort (hochgestimmt), verwenden. git rm Der empfohlene Befehl dient zum Entfernen der Sondereintrag im Index, der ein Untermodul angibt (ein 'Ordner' mit einem speziellen Modus 160000 ).

Wenn dieser besondere Eintrag Pfad wird nicht in der .gitmodule (wie ' Classes/Support/Three20 ' in der ursprünglichen Frage), dann müssen Sie es entfernen, um die " Keine Submodul-Zuordnung gefunden in .gitmodules für Pfad " Fehlermeldung.

Sie können alle Einträge im Index überprüfen, die auf Untermodule verweisen:

git ls-files --stage | grep 160000

Vorherige Antwort (November 2010)

Es ist möglich, dass Sie Ihr anfängliches Submodul nicht korrekt deklariert haben (d. h. ohne ein '/' am Ende, wie in meine alte Antwort auch wenn Ihr .gitmodule hat Pfade, die darin gut aussehen).

Dieses Thema Erwähnungen:

Erhalten Sie denselben Fehler, wenn Sie "git submodule init" von einem neuen Klon aus ausführen?
Wenn ja, haben Sie etwas falsch gemacht.

Wenn Sie keine Untermodule haben, löschen Sie .gitmodules und alle Referenzen .git/config, und stellen Sie sicher, dass das Pikimal-Verzeichnis nicht mit einem .git du darin.
Wenn das Problem damit behoben ist, melden Sie sich und machen Sie das Gleiche mit Ihrer Arbeitskopie für die Kreuzfahrt.

Löschen Sie natürlich nicht Ihre Haupt .gitmodules Datei, sondern kümmern sich um andere zusätzliche .gitmodules Dateien in Ihrem Arbeitsbaum.


Immer noch beim Thema "fehlerhafte Initialisierung von Submodulen", Jefromi erwähnt Untermodule, die eigentlich Gitlinks sind.

Véase Wie kann man nicht verfolgte Inhalte verfolgen? um ein solches Verzeichnis in ein echtes Submodul umzuwandeln.

26voto

Johnny Punkte 1668

Wenn ich SourceTree verwende, um das Zeug zu tun, spuckt es diese Meldung aus.
Die Nachricht, auf die ich gestoßen bin:

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

Mein Szenario ist, dass ich das Projektverzeichnis, das Folgendes enthält, falsch angewendet habe .git Ordner.
SourceTree betrachtet diesen Ordner als Git-Submodul, aber eigentlich nicht.

Meine Lösung ist die Verwendung der Befehlszeile, um es zu entfernen.

$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"

Entfernen Sie den Müll in Git und halten Sie es sauber.

17voto

luksak Punkte 3336

Ich habe dieses Problem für mich gelöst. Ursprünglich habe ich versucht, dies zu tun:

git submodule add --branch master [URL] [PATH_TO_SUBMODULE]

Wie sich herausstellt, sollte die Angabe der Option --branch nicht verwendet werden, wenn Sie den Master-Zweig klonen wollen . Es wird dieser Fehler ausgelöst:

fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'

Jedes Mal, wenn Sie versuchen, eine

git submodule sync

Dieser Fehler wird ausgelöst:

No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'

Und die in .gitmodules benötigten Zeilen werden nie hinzugefügt.

Die Lösung für mich war also diese:

git submodule add [URL] [PATH_TO_SUBMODULE]

12voto

zhuzhai liu Punkte 121

In der Datei .gitmodules habe ich die Zeichenfolge

"path = thirdsrc\boost" 

mit

"path = thirdsrc/boost", 

und es ist gelöst! - -

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X