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.
Składnia
| Polecenie | Co robi |
|---|---|
git submodule add <url> libs/x | Dodaje repozytorium jako submoduł w libs/x |
git clone --recurse-submodules <url> | Klonuje repozytorium razem z submodułami |
git submodule update --init --recursive | Inicjuje i pobiera submoduły po zwykłym klonowaniu |
git submodule update --remote | Aktualizuje submoduły do ich najnowszego commita |
git submodule status | Pokazuje commit każdego submodułu |
Typowe przypadki
| Cel | Polecenie |
|---|---|
| Sklonować projekt z submodułami | git clone --recurse-submodules <url> |
| Pobrać submoduły po wcześniejszym sklonowaniu | git submodule update --init --recursive |
| Podbić submoduł do najnowszej wersji | git submodule update --remote |
Najczęstsze pytania o git submodule
Czym jest submoduł w Git?
Jak sklonować repozytorium z submodułami?
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?
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?
--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?
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.