Jak sprawdzić konkretną wersję modułu podrzędnego za pomocą „git submodule”?

Odpowiedzi:

167

Repozytoria podmodułów pozostają w odłączonym stanie HEAD wskazującym na określone zatwierdzenie. Zmiana tego zatwierdzenia polega po prostu na sprawdzeniu innego znacznika lub zatwierdzeniu, a następnie dodaniu zmiany do repozytorium nadrzędnego.

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status w repozytorium nadrzędnym będzie teraz zgłaszać brudne drzewo:

# On branch dev [...]
#
#   modified:   submodule (new commits)

Dodaj katalog podmodułu i zatwierdź, aby zapisać nowy wskaźnik.

joemaller
źródło
14
Czy po zatwierdzeniu przeze mnie repozytorium nadrzędnego określonej gałęzi / wersji modułu podrzędnego inne osoby mogą w przyszłości pobierać tę samą wersję modułu podrzędnego? A może muszą ponownie określić ręcznie?
QZHua,
@QZHua: sam eksperymentowałem z tym i wygląda na to, że identyfikator zmiany podmodułu jest zachowywany po sklonowaniu rodzica.
Psychonauta
37

Krok 1: Dodaj podmoduł

   git submodule add git://some_repository.git some_repository

Krok 2: Napraw moduł podrzędny do określonego zatwierdzenia

Domyślnie nowy moduł podrzędny będzie śledził HEAD gałęzi głównej, ale NIE będzie aktualizowany podczas aktualizacji repozytorium podstawowego. Aby zmienić moduł podrzędny w celu śledzenia określonego zatwierdzenia lub innej gałęzi, zmień katalog na folder modułu podrzędnego i przełącz gałęzie, tak jak w normalnym repozytorium.

   git checkout -b some_branch origin/some_branch

Teraz podmoduł jest ustalony w gałęzi rozwoju zamiast HEAD master.

Od dwóch facetów kłócących się - połącz podmoduły Git z konkretnym zatwierdzeniem lub gałęzią .

fsenart
źródło
20
Jest łatwiejszy w użyciugit submodule add -b some_branch git://some_repository.git some_repository
Caumons
15
W tej chwili nie wydaje się, aby git submodule add -bmożna było pobrać tag lub sha1hash. Może zająć tylko gałąź.
CMCDragonkai
Czy istnieje problem z tym problemem w narzędziu do śledzenia problemów Git? Czy ktoś uprzejmie opublikowałby adres URL, abyśmy mogli go śledzić? Dzięki.
colan
Instrukcje @colan dotyczące zgłaszania błędów znajdują się na stronie git-scm.com/community . Ale obsługa -bgałęzi, a nie tagów lub zatwierdzeń shas, ​​jest funkcją, a nie błędem (w rzeczywistości -bjest skrótem --branch).
henry
1
Westchnienie. Po tych wszystkich latach nadal nie mają publicznego narzędzia do śledzenia problemów.
colan