Próbuję umieścić submoduł w repozytorium. Problem polega na tym, że kiedy klonuję repozytorium nadrzędne, folder submodułu jest całkowicie pusty.
Czy jest jakiś sposób, aby to tak, że git clone parent_repo
faktycznie umieszcza dane w folderze submodułu?
Na przykład http://github.com/cwolves/sequelize/tree/master/lib/ , nodejs-mysql-native
wskazuje na zewnętrzny submoduł git, ale kiedy kasuję sequelize
projekt, ten folder jest pusty.
git
git-submodules
znak
źródło
źródło
git clone --recurse-submodules --remote-submodules
(G3 2.23): sklonuje i zaktualizuje submoduły w jednym poleceniu. Zobacz moją zredagowaną odpowiedź poniżej .Odpowiedzi:
W wersji 2.13 Git i późniejszych
--recurse-submodules
można używać zamiast--recursive
:Uwaga edytora:
-j8
jest opcjonalną optymalizacją wydajności, która stała się dostępna w wersji 2.8 i pobiera do 8 podmodułów jednocześnie - patrzman git-clone
.W wersji 1.9 Git do wersji 2.12 (
-j
flaga dostępna tylko w wersji 2.8+):W wersji 1.6.5 Git i nowszych możesz używać:
W przypadku już sklonowanych repozytoriów lub starszych wersji Git użyj:
źródło
master
?Musisz wypełnić dwie rzeczy, zanim podmoduł zostanie wypełniony:
źródło
git-submodule(1)
stronę podręcznika ( kernel.org/pub/software/scm/git/docs/git-submodule.html ). Dowiesz się, żegit submodule update
obsługuje ładny parametr o nazwie--recursive
.git submodule update --init
(Zobacz także moją odpowiedź ).Git 2.23 (III kwartał 2019): jeśli chcesz sklonować i zaktualizować submoduły do ich najnowszej wersji:
Jeśli chcesz je tylko sklonować na nagranym SHA1:
Patrz poniżej.
Oryginalna odpowiedź 2010
Jak joschi wspomina w komentarzach,
git submodule
obsługuje teraz--recursive
opcję (Git1.6.5 i więcej).Zobacz Praca rekurencyjnie z podmodułami git dla części początkowej.
Zobacz
git submodule
wyjaśnienie, aby uzyskać więcej.Aktualizacja 2016 z git 2.8: patrz „ Jak przyspieszyć / zrównoleglić pobieranie podmodułów git za pomocą
git clone --recursive
? ”Możesz zainicjować pobieranie submodułu przy użyciu wielu wątków równolegle.
Na przykład:
Co więcej, dzięki Git 2.23 (III kwartał 2019 r.) Możesz klonować i pobierać moduły podrzędne do ich gałęzi śledzenia za pomocą jednego polecenia!
Zobacz zatwierdzenie 4c69101 (19 maja 2019 r.), Autor: Ben Avison (
bavison
) .(Połączone przez Junio C Hamano -
gitster
- w commit 9476094 , 17 czerwca 2019)To znaczy:
źródło
git submodule update --init --recursive --remote
powinien zaktualizować je do najnowszego zatwierdzenia w swoim oddziale. (np .: stackoverflow.com/a/56981834/6309 )clone --recurse-submodules --remote-submodules
norsubmodule update --init --recursive --remote
) nie pozwala mi pobrać podrep. Wszystko, co dostaję, to plik .gitmodules i nie mogłem znaleźć innego sposobu na zainicjowanie subrepos niż ręczne klonowanie ich jeden po drugim. Chciałbym mieć przynajmniej skrypt do zrobienia tego zsubmodule foreach
...[Szybka odpowiedź]
Możesz użyć tego polecenia, aby sklonować swoje repozytorium ze wszystkimi podmodułami:
Lub jeśli już sklonowałeś projekt, możesz użyć:
źródło
Jeśli twój podmoduł został dodany do gałęzi, pamiętaj o dołączeniu go do polecenia klonowania ...
źródło
Spróbuj tego:
Automatycznie pobiera dane z submodułu, zakładając, że już dodałeś submoduły do projektu nadrzędnego.
źródło
--recurse-submodules
i--recursive
są równoważnymi aliasami .git submodule update --init --recursive
tak , jak wyjaśniono w tej odpowiedziMyślę, że możesz przejść 3 kroki:
źródło
spóźniona odpowiedź
Ponieważ spędziłem całą godzinę na zabawie z przyjacielem: Nawet jeśli masz uprawnienia administratora do BitBucket, zawsze klonuj ORYGINALNE repozytorium i używaj hasła tego, kto jest właścicielem repozytorium. Irytujące, aby dowiedzieć się, że wpadłeś na tę minetrapę: P
źródło
Wypróbuj to, aby dołączyć submoduły do repozytorium git.
lub
źródło
Możesz użyć
--recursive
flagi podczas klonowania repozytorium. Ten parametr zmusza git do klonowania wszystkich zdefiniowanych podmodułów w repozytorium.Po klonowaniu czasami gałęzie podmodułów mogą zostać zmienione, więc uruchom następującą komendę:
źródło
[Szybka odpowiedź]
Po sklonowaniu repozytorium nadrzędnego (które zawierało repozytorium podmodułu), wykonaj następujące czynności:
źródło
Pobieranie równoległe submodułów ma na celu skrócenie czasu potrzebnego na pobranie repozytoriów i wszystkich powiązanych z nim podmodułów poprzez umożliwienie pobierania wielu repozytoriów jednocześnie. Można tego dokonać za pomocą nowej opcji --jobs, np .:
Według zespołu Git może to znacznie przyspieszyć aktualizację repozytoriów zawierających wiele podmodułów. Gdy używasz --recurse-submodules bez nowej opcji --jobs, Git będzie pobierał submoduły jeden po drugim.
Źródło: http://www.infoq.com/news/2016/03/git28-released
źródło
Miałem ten sam problem z repozytorium GitHub. Na moim koncie brak klucza SSH. Proces jest
Następnie możesz sklonować repozytorium za pomocą submodules (
git clone --recursive YOUR-GIT-REPO-URL
)lub
Uruchom
git submodule init
igit submodule update
pobierz podmoduły w już sklonowanym repozytorium.źródło
Permission denied (publickey). fatal: Could not read from remote repository.
błądSpróbuj tego.
Jeśli dodałeś podmoduł w gałęzi, upewnij się, że dodałeś go do polecenia klonowania.
źródło
Jeśli jest to nowy projekt, możesz to zrobić w następujący sposób:
Jeśli jest już zainstalowany niż:
źródło