Aktualizacja marzec 2013
Git 1.8.2 dodał możliwość śledzenia gałęzi.
" git submodule
" zaczął uczyć się nowego trybu integracji z końcówką zdalnej gałęzi (w przeciwieństwie do integracji z zatwierdzeniem zapisanym w gitlinku superprojektu).
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
Jeśli masz już obecny moduł podrzędny , a teraz chciałbyś śledzić gałąź, zobacz „ jak sprawić, by istniejący moduł podrzędny śledził gałąź ”.
Zobacz także samouczek Vogelli dotyczący modułów podrzędnych, aby uzyskać ogólne informacje o modułach podrzędnych .
Uwaga:
git submodule add -b . [URL to Git repo];
^^^
Zobacz git submodule
stronę podręcznika :
Specjalna wartość .
jest używana do wskazania, że nazwa gałęzi w module podrzędnym powinna być taka sama, jak nazwa bieżącej gałęzi w bieżącym repozytorium .
Zobacz commit b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Jeśli --branch
podano, zapisz to.gitmodules
Umożliwia to łatwe zapisanie submodule.<name>.branch
opcji .gitmodules
podczas dodawania nowego modułu podrzędnego. Dzięki tej poprawce
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
zmniejsza się do
$ git submodule add -b <branch> <repository> [<path>]
Oznacza to, że przyszłe połączenia do
$ git submodule update --remote ...
otrzyma aktualizacje z tej samej gałęzi, której użyłeś do zainicjowania modułu podrzędnego, co zwykle jest tym, czego chcesz.
Podpisał: W. Trevor King
Oryginalna odpowiedź (luty 2012):
Podmoduł to pojedyncze zatwierdzenie, do którego odwołuje się repozytorium nadrzędne.
Ponieważ samo w sobie jest repozytorium Git, „historia wszystkich zatwierdzeń” jest dostępna za pośrednictwem modułu git log
podrzędnego.
Aby rodzic mógł automatycznie śledzić najnowsze zatwierdzenie danej gałęzi podmodułu, musiałby:
- cd w module podrzędnym
- git fetch / pull, aby upewnić się, że ma najnowsze zatwierdzenia we właściwej gałęzi
- cd z powrotem w repozytorium nadrzędnym
- dodaj i zatwierdź, aby zarejestrować nowe zatwierdzenie podmodułu.
gitslave (na który już spojrzałeś) wydaje się być najlepszym rozwiązaniem, w tym dla operacji commit .
Trochę irytujące jest wprowadzanie zmian w module podrzędnym ze względu na konieczność wyewidencjonowania odpowiedniej gałęzi podmodułu, wprowadzenia zmiany, zatwierdzenia, a następnie przejścia do superprojektu i zatwierdzenia zatwierdzenia (lub przynajmniej zapisania nowej lokalizacji podmoduł).
Inne alternatywy są szczegółowo opisane tutaj .