Menu
Coddy logo textTech

Git Submodule

Ostatnia aktualizacja

Submoduł osadza jedno repozytorium Git wewnątrz drugiego, przypięte do konkretnego commita. Repozytorium nadrzędne zapisuje, od którego commita submodułu zależy, więc wszyscy dostają tę samą wersję. W ten sposób dołączasz wspólną bibliotekę albo komponent z osobnego repozytorium bez kopiowania jego kodu.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

git submodule osadza inne repozytorium wewnątrz twojego, przypięte do jednego konkretnego commita.

Składnia

PolecenieCo robi
git submodule add <url> libs/xDodaje repozytorium jako submoduł w libs/x
git clone --recurse-submodules <url>Klonuje repozytorium razem z submodułami
git submodule update --init --recursiveInicjuje i pobiera submoduły po zwykłym klonowaniu
git submodule update --remoteAktualizuje submoduły do ich najnowszego commita
git submodule statusPokazuje commit każdego submodułu

Typowe przypadki

CelPolecenie
Sklonować projekt z submodułamigit clone --recurse-submodules <url>
Pobrać submoduły po wcześniejszym sklonowaniugit submodule update --init --recursive
Podbić submoduł do najnowszej wersjigit submodule update --remote

Najczęstsze pytania o git submodule

Czym jest submoduł w Git?
Submoduł to repozytorium Git zagnieżdżone w innym repozytorium Git na ustalonym commicie. Repozytorium nadrzędne przechowuje wskaźnik do tego konkretnego commita, a nie pliki submodułu, więc współpracownicy pobierają tę samą wersję. Używa się go do dołączania zależności albo wspólnego komponentu, który ma własne repozytorium i historię.
Jak sklonować repozytorium z submodułami?
Użyj git clone --recurse-submodules <url>, żeby w jednym kroku sklonować repozytorium nadrzędne i wszystkie jego submoduły. Jeśli repozytorium jest już sklonowane bez tej flagi, uruchom potem git submodule update --init --recursive, żeby wypełnić foldery submodułów.
Jak zaktualizować submoduł do najnowszego commita?
Uruchom git submodule update --remote, które pobiera śledzoną gałąź każdego submodułu i przesuwa go na najnowszy commit. Potem zrób commit tej zmiany w repozytorium nadrzędnym, bo to ono zapisuje, na który commit submodułu wskazuje: aktualizacja nie jest zapisana, dopóki nie zatwierdzisz tego wskaźnika.
Dlaczego folder submodułu jest pusty po sklonowaniu?
Bo klonowanie odbyło się bez --recurse-submodules, więc Git utworzył foldery, ale nie pobrał ich zawartości. Naprawisz to przez git submodule update --init --recursive, które inicjuje i pobiera każdy submoduł.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git submodule w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia konfigurację repozytorium.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ