Git robi dokładnie to, co powinien. git submodule update
ustawi Twój moduł podrzędny na to, co bieżące zatwierdzenie w repozytorium głównym określa, w którym module powinien znajdować się moduł podrzędny. W ten sposób możesz wyewidencjonować inną gałąź, starsze zatwierdzenie lub tag, a następnie uruchomić git submodule update
, a moduł podrzędny będzie ustawiony na to, czego oczekuje referencja, więc całe twoje rozwiązanie będzie miało zależności zależne.
Co trzeba zrobić, to:
cd mysubmoduledir
git fetch
git checkout master # or any other branch that you need the latest of
git merge origin/master
cd - # go back to the top repo
git status # should show that your submodule changed
git add mysubmoduledir
git commit -m "Updated my solution to use latest sub project."
krótsza wersja jest:
cd mysubmoduledir
git pull # assumes you are already on the branch you need to be on
cd -
git commit -am "Updated submodule" # assumes you had no other modified files
Słowo "zmiana" nie jest najlepszy dla tego polecenia submodule. To naprawdę oznacza "wskaż moduł częściowy do zatwierdzenia, którego oczekuje zatwierdzenie repozytorium macierzystego".
Aktualizacja modułu do innego zatwierdzenia (nie musi być najnowszym) wymaga, abyś przeszedł do tego katalogu, manipuluj nim jak zwykłym repozytorium git, aby bieżący commit był tym, czego potrzebujesz, a następnie wróć i Zatwierdź tę zmianę w repozytorium najwyższego poziomu.
Co za idiotyczne imię dla polecenia ?! To oczywiście powinno być git submodule etadpu –
Myślenie o tym "module submodule ilikepancakes" prawdopodobnie miałoby taki sam sens. A jeśli ktoś się z tym nie zgadza, przeczytaj mądrą prezentację o projekcie przestrzeni jądra apis: http://man7.org/conf/lca2013/Why_kernel_space_sucks-2013-02-01-printable.pdf –
Więcej szczegółów na temat używania modułu 'git submodule ': https://chrisjean.com/git-submodules-adding-using-removing-and-updating/ –