OK. Więc pomyślałem, że to polizałem ... ale teraz ...
Mam projekt, który zawiera jedną małą bibliotekę z GitHub jako moduł podrzędny. W oryginalnej wersji tego super-projektu podmoduł działa zgodnie z oczekiwaniami.
Jednak właśnie sklonowałem superprojekt, zrobiłem to, co uważałem, że powinienem: „git submodule init”, spowodowałem wyświetlenie katalogu podmodułu, ale jest on pusty.
Jeśli teraz spróbuję to zrobić
git submodule update
dostaję
fatal: Needed a single revision
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'
Jeśli spróbuję
git submodule foreach git pull
dostaję
Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.
W moim .git / config mam to:
[submodule "external_libraries/BEACHhtml"]
url = [email protected]:interstar/BEACHhtml.git
W moich .gitmodules mam to:
[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = [email protected]:interstar/BEACHhtml.git
Czy ktoś ma pomysł, czego brakuje?
źródło
ext/blah
), jak i pasujący folder poniżejGIT_DIR
(.git/modules/ext/blah
).git submodule update
nie udawało się na moim serwerze CI, ponieważ chciał, aby ktoś zaakceptował klucze RSA (serwer ci zwykle używa połączenia https i był to pierwszy raz, kiedy podmoduł wyciągnął połączenie ssh). Mam nadzieję, że zaoszczędzi to komuś godziny drapania się po głowie!Miałem ten problem (niestabilna sieć, więc porzucono mi kasowanie podmodułu w ten sposób) i rozwiązałem go, tworząc ten skrypt (nazwał go,
git-submodule-fix
aby móc go uruchomić jakogit submodule-fix
)Jeśli otrzymasz to np. Z pliku
git submodule update
zrobić
źródło
Rozwiązany przez usunięcie 2 katalogów i ponowne pobranie modułu podrzędnego:
external_libraries/BEACHhtml
i zajrzyj do.git
pliku. Jego treść powinna być podobnagitdir: ../../.git/modules/external_libraries/BEACHhtml
external_libraries/BEACHhtml
i.git/modules/external_libraries/BEACHhtml
katalogi.Od teraz
git submodule update
działa bez błędów.źródło
git submodule init
wcześniej,git submodule update
aby moduł podrzędny został ponownie zainicjowany, wtedy to zadziała.Jeśli czytasz w 2019 lub później, po prostu zaktualizuj klienta git. Pracował dla mnie.
źródło
użyj narzędzia porównywania, aby porównać działający oryginalny klon i ten. Ponadto, co się
git submodule
wyświetla. Zanim to zrobisz, upewnij się, że wskazujesz tę samą gałąź w każdym repozytorium.Podejrzewam, że przeszedłeś do gałęzi lub starszej wersji, w której moduł podrzędny nie został zdefiniowany.
mam nadzieję że to pomoże
źródło
Miałem ten sam problem z modułem podrzędnym w projekcie. Kiedy próbowałem sklonować podmoduł oddzielnie, działał dobrze.
Wypróbowałem wszystkie powyższe odpowiedzi, ale bez powodzenia (aktualizacja modułu podrzędnego git, ..., usunięcie folderów modułu podrzędnego, ...).
Problem zniknął po aktualizacji gita (z Git-1.7.11-preview20120710) do najnowszej wersji (do Git-1.8.1.2-preview20130201). O dziwo moi koledzy mieli jeszcze starszą wersję, działali bez żadnych problemów, ale byli na Macu. Jestem na Win7 64bit.
źródło