Opróżnij folder podmodułu Git po sklonowaniu repozytorium


130

Mam jedno repozytorium hostowane pod adresem https://github.com/aikiframework/json . Na mojej kopii lokalnej dodałem podmoduł za pomocą polecenia

git submodule add git@github.com:jcubic/json-rpc.git json-rpc

Następnie wykonałem commit i push, a zmiany pojawiają się na GitHub (mogę to kliknąć). Ale kiedy sklonuję repozytorium

git clone https://github.com/aikiframework/json.git

folder modułu podrzędnego json-rpc jest pusty.

Czego tu brakuje? Czy o czymś zapomniałem? Dlaczego ten folder jest pusty?

Odpowiedzi:


200

OK, znalazłem, trzeba było dodać --recursiveprzy klonowaniu repozytorium.

Więc polecenie clone kończy się następująco:

git clone https://github.com/aikiframework/json.git --recursive

229
Tak. Możesz również pobrać podmoduły po fakcie za pomocą git submodule update --init, jeśli już sklonowałeś, ale zapomniałeś --recursive.
Amber

4
Właśnie stanąłem przed problemem polegającym na tym, że w gałęzi develop znajduje się podmoduł, ale jeszcze nie w gałęzi master. Kiedy sklonujesz repozytorium git za pomocą --recursive, nie znajdzie on modułu podrzędnego w gałęzi głównej i musisz go pobrać za pomocą komentarza Ambers „git submodule update --init”, aby uzyskać również moduł podrzędny.
d4Rk

11
Jeśli używasz git submodule update --inittrzeba będzie udać się do każdej transakcji repo i zrobić git checkout masterinaczej dostaniesz błąd You are not currently on a branch.na git pullkiedy próbujesz go zaktualizować do nowszej wersji.
Noitidart

@Noitidart czy jest sposób, który tego nie robi? (już po sklonowaniu projektu)
borgr

1
@Noitidart Dzięki za update --initpodpowiedź. To pomaga, gdy oryginalny klon nie ma --recursivew nim i po prostu chce wyciągnąć brakujące moduły podrzędne.
Jari Turkia
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.