Mam projekt, który ma podmoduł w lib/three20
Mój .gitmodule
plik wygląda następująco:
[submodule "lib/three20"]
path = lib/three20
url = git://github.com/facebook/three20.git
Sklonowałem to w przeszłości bez błędów ( git submodule init
po którym następuje a git submodule update
) i działa przez jakiś czas.
Próbowałem sklonować to na nowym komputerze, a teraz pojawia się ten błąd git submodule init
:
No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'
Ta ścieżka to po prostu pusty folder w Xcode, którego używam do przechowywania projektów z innego katalogu. To nie jest część .gitmodules
pliku, więc nie widzę, skąd bierze tę ścieżkę.
Jakieś pomysły?
git
git-submodules
Ben Scheirman
źródło
źródło
.git
folderze. Wykonaniegrep -r "Classes/Support/Three20" *.*
nie przynosi żadnych rezultatówgit ls-tree HEAD Classes/Support
, a jeśli powie, że Three20 to zatwierdzenie, jest tam gitlink. Jeśli tak, postępuj zgodnie z odpowiednimi instrukcjami z pytania VonC, do którego link znajduje się powyżej, aby zmienić go w odpowiedni podmoduł lub przekształcić w regularnie śledzoną zawartość.Odpowiedzi:
W następstwie rajibchowdhury „s odpowiedź (upvoted), użycie
git rm
polecenia, które jest zalecane jest usunięcie specjalnego wpisu w indeksie wskazującego submodule (a«folderu»ze specjalnym trybie160000
).Jeśli do tej specjalnej ścieżki wpisu nie ma odniesienia w
.gitmodule
(np. „Classes/Support/Three20
” W pierwotnym pytaniu), należy ją usunąć, aby uniknąć komunikatu o błędzie „ Nie znaleziono mapowania podmodułu.gitmodules
dla ścieżki ”.Możesz sprawdzić wszystkie wpisy w indeksie, które dotyczą podmodułów:
Poprzednia odpowiedź (listopad 2010 r.)
Możliwe, że nie zadeklarowałeś poprawnie swojego początkowego submodułu (tj. Bez żadnego końca / końca na końcu, jak opisano w mojej starej odpowiedzi , mimo że masz
.gitmodule
ścieżki, które wyglądają w nim dobrze).W tym wątku wspomniano:
Oczywiście nie usuwaj głównego
.gitmodules
pliku, ale dbaj o inne dodatkowe.gitmodules
pliki z drzewa roboczego.Wciąż w temacie „niepoprawnej inicjalizacji submodułu” Jefromi wymienia submoduły, które w rzeczywistości są gitlinkami.
Zobacz Jak śledzić nieśledzoną zawartość? aby przekonwertować taki katalog na prawdziwy podmoduł.
źródło
git rm xxx
(bez ukośnika)git rm --cached
pozwala zachować go na dysku podczas usuwania go z indeksu..gitmodule
odniesienia do tych wpisów, a następnie stackoverflow.com/a/16162000/6309 . Jeśli nie, prostygit rm afolder
(bez końcowego / slash)Nie znaleziono odwzorowania podmodułów w .gitmodules dla ścieżki „OtherLibrary / MKStore”, kiedy
Nie wiedziałem, dlaczego wystąpił błąd. Po spędzeniu minuty i znalezieniu odpowiedzi w stackoverflow.
a następnie ponownie zaktualizuj submoduł. Działa dobrze.
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
źródło
git submodule sync | grep "mapping found"
czasugit rm
do czasugit submodule sync
. Problem zniknął !.Kiedy użyję SourceTree do zrobienia tego, wypluje tę wiadomość.
Wiadomość, którą napotkałem:
Mój scenariusz polega na tym, że źle zastosowałem katalog projektu zawierający folder .git .
SourceTree uznał ten folder za podmoduł git, ale tak naprawdę nie.
Moje rozwiązanie polega na użyciu wiersza polecenia, aby go usunąć.
usuń śmieci z git i utrzymuj je w czystości.
źródło
Rozwiązałem ten problem dla siebie. Początkowo próbowałem to zrobić:
Jak się okazuje, specyfikacja opcji --branch nie powinna być używana, jeśli chcesz sklonować gałąź master . Zgłasza ten błąd:
Za każdym razem, gdy próbujesz zrobić
Ten błąd zostanie zgłoszony:
I wiersze potrzebne w .gitmodules nigdy nie są dodawane.
Tak więc dla mnie rozwiązaniem było:
źródło
Właśnie trafiłem w ten błąd po próbie „git submodule init” przy nowej kasie mojego repozytorium. Okazuje się, że początkowo podałem podfolder modułu z niewłaściwym przypadkiem. Ponieważ jestem na komputerze Mac z systemem plików z rozróżnianiem wielkości liter (hurr), to nie działa. Na przykład:
udaje się, ale problem polega na tym, że na dysku jest ścieżka
Nie rozumiem, dlaczego git inicjuje moduł w niewłaściwym folderze (ignorując niepoprawną wielkość liter w moim poleceniu), a następnie działa poprawnie (przez niepowodzenie) z kolejnymi poleceniami.
źródło
Po prostu
git rm subdir
będzie dobrze. spowoduje to usunięcie podkatalogu jako indeksu.źródło
Właśnie miałem ten problem. Przez jakiś czas próbowałem porady dotyczące usuwania ścieżki, git usuwania ścieżki, usuwania .gitmodules, usuwania wpisu z .git / config, dodawania submodułu z powrotem, a następnie zatwierdzania i wypychania zmiany. To było zagadkowe, ponieważ nie wyglądało na żadną zmianę, kiedy wykonałem polecenie „git commit -a”, więc próbowałem przesunąć tylko usunięcie, a następnie przesunięcie odczytu, aby wyglądało jak zmiana.
Po chwili przypadkowo zauważyłem, że po usunięciu wszystkiego, jeśli uruchomiłem polecenie „git submodule update --init”, miał komunikat o konkretnej nazwie, do której git nie powinien już mieć żadnego odniesienia: nazwa repozytorium podmodułu linkuje do, a nie nazwa ścieżki, do której sprawdzał. Grepping ujawnił, że to odwołanie znajduje się w .git / index. Uruchomiłem więc „git rm --cached repo-name”, a następnie przeczytałem moduł. Kiedy zatwierdziłem ten czas, komunikat zatwierdzenia zawierał zmianę polegającą na usunięciu tego nieoczekiwanego obiektu. Po tym działa dobrze.
Nie jestem pewien, co się stało, domyślam się, że ktoś źle wykorzystał polecenie submodułu git, może odwracając argumenty. Mógłbym być nawet ja ... Mam nadzieję, że to komuś pomaga!
źródło
w pliku .gitmodules zamieniłem ciąg
z
i rozwiązane! - -
źródło
Mapowanie folderów można znaleźć w
.git/modules
folderze (każdy maconfig
plik w odniesieniu do jegoworktree
), więc upewnij się, że foldery te odpowiadają konfiguracji w.gitmodules
i.git/config
.Tak więc
.gitmodules
ma właściwą ścieżkę:a
.git/modules/<path>/config
w[core]
sekcji masz właściwą ścieżkę do<path>
, na przykładJeśli
.git/modules
brakuje odpowiedniego folderu , przejdź do katalogu podmodułu i wypróbujgit reset HEAD --hard
lubgit checkout master -f
. Jeśli to nie pomoże, prawdopodobnie chcesz usunąć wszystkie odniesienia do uszkodzonego podmodułu i dodać go ponownie, zobacz: Zmień nazwę podmodułu git .źródło
Scenariusz: zmiana submodułu z katalogu dirA-xxx na inny katalog dirB-xxx
biegać
git submodule status
jeśli błąd powrotu: Nie znaleziono mapowania submodułów w .gitmodules dla ścieżki dirA-xxx. Wynika to z faktu, że dirA-xxx nie istnieje, ale wciąż jest śledzony przez git. Zaktualizuj indeks git przez:
git rm --cached dirA-xxx
Spróbuj z
git submodule foreach git pull
. Nie przeszedłem właściwego badania struktury submodułu git, więc powyższe kroki mogą coś zepsuć. Niemniej jednak, przechodząc przez powyższe kroki, w tej chwili wszystko wygląda dobrze. Jeśli masz jakiś wgląd lub właściwe kroki, aby załatwić sprawę, udostępnij ją tutaj. :)źródło
Zwykle git tworzy ukryty katalog w katalogu głównym projektu (.git /)
Podczas pracy nad systemem CMS możliwe jest zainstalowanie modułów / wtyczek zawierających katalog .git / z metadanymi git dla określonego modułu / wtyczki
Najszybszym rozwiązaniem jest znalezienie wszystkich katalogów .git i zachowanie tylko głównego katalogu metadanych git. Jeśli to zrobisz, git nie uzna tych modułów za podmoduły projektu.
źródło
Po obejrzeniu mojego
.gitmodules
okazało się, że mam wielką literę, w której nie powinienem. Pamiętaj więc, że w.gitmodules
katalogach rozróżniana jest wielkość literźródło
.gitmodules
zamiast tego nie miałeś na myśli ?W moim przypadku błąd był prawdopodobnie spowodowany niepoprawnym połączeniem między .gitmodules w dwóch gałęziach z różnymi konfiguracjami submodułów. Po zapoznaniu się z sugestiami z tego forum rozwiązałem problem z ręczną edycją pliku .gitmodules, dodanie brakującego wpisu modułu jest dość łatwe. Następnie polecenie git submodule update --init --recursive działało bez problemów.
źródło
Problemem dla nas było to, że do .gitmodules zostały dodane zduplikowane pozycje submodułu (prawdopodobnie z połączenia). Szukaliśmy ścieżki, na którą Git narzekał w .gitmodules i znaleźliśmy dwie identyczne sekcje. Usunięcie jednej z sekcji rozwiązało dla nas problem.
Za to, co jest warte, git 1.7.1 dał błąd „brak mapowania podmodułu”, ale git 2.13.0 nie wydawał się tym przejmować.
źródło