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?

Author: memmons, 2010-01-26

4 answers

  1. masz projekt -- nazwij go MyWebApp który ma już repo github
  2. chcesz użyć repozytorium jquery w swoim projekcie
  3. 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.

 322
Author: memmons,
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.

 20
Author: WhyNotHugo,
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

 2
Author: Tom,
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
 0
Author: Dapaldo,
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