Jak skonfigurować projekt git tak, aby używał zewnętrznego podmodułu repo?
Chciałbym stworzyć repo, które ściągnie zdalny repo.
Na przykład, powiedzmy jQuery jako podmoduł:
git://github.com/jquery/jquery.git
Jaki byłby proces tworzenia repo z jQuery jako submodule i dodawania własnego zewnętrznego jako zdalnego repo.
Również po skonfigurowaniu, jeśli nacisnę / pociągnę do własnego pilota, czy zewnętrzny pozostanie nienaruszony?
4 answers
- masz projekt -- nazwij go MyWebApp który ma już repo github
- chcesz użyć repozytorium jquery w swoim projekcie
- chcesz pobrać repo jquery do swojego projektu jako submodule .
Moduły podrzędne są naprawdę, naprawdę łatwe do odniesienia i użycia. Zakładając, że masz już mywebapp skonfigurowany jako repo, z terminala wydania tych poleceń:
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
Utworzy katalog o nazwie externals/jquery
* i połączy go z repozytorium github jquery. Teraz musimy tylko init podmodułu i sklonować do niego kod: {]}
git submodule update --init --recursive
Powinieneś teraz sklonować cały najnowszy kod do podmodułu. Jeśli repo jQuery się zmieni i chcesz ściągnąć najnowszy kod, po prostu ponownie wydaj polecenie submodule update
. Uwaga: zazwyczaj mam kilka zewnętrznych repozytoriów w moich projektach, więc zawsze grupuję repozytoria w katalogu "externals".
The online Pro Git Book has some good informacje na temat podmodułów (i ogólnie Gita) przedstawione w czytelny sposób. Alternatywnie, git help submodule
również da dobre informacje. Możesz też rzucić okiem na Tutorial Git Submodule na Git wiki.
Zauważyłem wpis na blogu, który mówi o podmodułach i porównuje je do mechanizmu svn Subversion: externals: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
* jako najlepszą praktykę należy zawsze umieścić swój podmodułów we własnym katalogu, np. zewnętrznych. Jeśli tego nie zrobisz, twój główny katalog projektu może stać się bardzo zaśmiecony bardzo szybko.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 23:41:00
Większość z tego, co musisz wiedzieć, została już odebrana, więc nie będę się tym przejmował, jednak znalazłem małą informację, której zwykle brakuje.
Jak wiesz, " git pull "nie zaktualizuje podmodułów, a" Git submodules update " również nie pobierze najnowszego nagłówka tych podmodułów.
Aby zaktualizować wszystkie moduły podrzędne do ich najnowszej wersji, możesz użyć
git submodule foreach git pull
Jeśli często zmieniasz swoje podmoduły i masz ich wiele, to "git foreach" stanie się nieocenione.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-11 04:06:44
W końcu znalazłem http://github.com/evilchelu/braid wydawało się, że pasuje do tego, jak oczekiwałem podmodułów i pilotów do pracy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-31 11:39:03
Myślę, że odpowiedź @ Hugo może być tym, czego potrzebujesz i działa dobrze. Więc znalazłem łatwiejszy sposób.
git submodule update --remote
To wszystko.
Więc kompletny przepływ pracy może być:
git clone project-with-submodules
git submodule init
git config -l
git submodule update --remote
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-20 10:44:34