Chciałbym utworzyć repozytorium, które pobiera repozytorium zdalne.
Na przykład powiedzmy jQuery jako submoduł:
git://github.com/jquery/jquery.git
Jaki byłby proces tworzenia repozytorium z jQuery jako podmodułem i dodawania własnego zewnętrznego jako zdalnego repo.
Czy po ustawieniu, jeśli popchnę / pociągnę do własnego pilota, czy zewnętrzny pozostanie nienaruszony?
git
github
external
git-submodules
Tomek
źródło
źródło
Odpowiedzi:
Submoduły są naprawdę bardzo łatwe do odniesienia i użycia. Zakładając, że masz już skonfigurowaną MyWebApp jako repozytorium, z terminala wydaj następujące polecenia:
Spowoduje to utworzenie katalogu o nazwie
externals/jquery
* i połączenie go z repozytorium jquery github. Teraz wystarczy zainicjować podmoduł i sklonować do niego kod:Powinieneś teraz mieć cały najnowszy kod sklonowany w submodule. Jeśli repozytorium jquery się zmieni i chcesz ściągnąć najnowszy kod, po prostu wydaj
submodule update
ponownie polecenie. Uwaga: zazwyczaj w moich projektach mam wiele zewnętrznych repozytoriów, dlatego zawsze grupuję te repozytoria w katalogu „zewnętrznym”.Internetowa książka Pro Git Book zawiera kilka dobrych informacji na temat submodułów (i ogólnie git) przedstawionych w łatwy do odczytania sposób. Alternatywnie,
git help submodule
daje również dobre informacje. Lub spójrz na samouczek Git Submodule na git wiki.Zauważyłem ten wpis na blogu, który mówi o submodułach i porównuje je z mechanizmem svn: externals Subversion: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
* Najlepszą praktyką jest, aby zawsze umieszczać swoje moduły podrzędne w ich własnym katalogu, takim jak Zewnętrzne. Jeśli tego nie zrobisz, katalog główny projektu może stać się bardzo zagracony bardzo szybko.
źródło
git submodule add
igit submodule update
... Nie jestem pewien, o ile łatwiej byłoby.Odpowiedzi na większość potrzebnych informacji zostały już udzielone, więc nie zawracam sobie głowy rozwiązywaniem tego problemu, jednak znalazłem małą informację, której zwykle brakuje.
Jak wiecie, „git pull” nie zaktualizuje submodułów, a „update git submodules” nie pobierze również najnowszej wersji HEAD tych submodułów.
Aby zaktualizować wszystkie swoje podmoduły do ich najnowszej wersji, możesz użyć
Jeśli często zmieniasz swoje podmoduły i masz ich dużo, wówczas „git foreach” stanie się nieoceniony.
źródło
W końcu znalazłem http://github.com/evilchelu/braid , że to wydaje się pasować do tego, w jaki sposób spodziewałem się podmodułów i pilotów do pracy
źródło
Myślę, że odpowiedź @ Hugo może być tym, czego potrzebujesz i działa dobrze. Więc znalazłem łatwiejszy sposób.
To wszystko.
Tak więc pełny przepływ pracy może być:
źródło