Kaip „git klonas“ apima submodulius?

Aš stengiuosi, kad repo būtų submodulis.

Problema ta, kad, kai klonuosiu pirminį repo, submodulio aplankas yra visiškai tuščias.

Ar yra būdas padaryti „git kloną tėvą“ iš tikrųjų įdėti duomenis į submodulio aplanką?

pavyzdys: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native nurodo išorinį gitą, bet, kai patikrinu sequelize projektą, šis aplankas yra tuščias ...

1608
26 сент. Mark 26 sept. 2010-09-26 10:13 „10, 2010-09-26 10:13 10:13
@ 12 atsakymų

Nuo 2.13 versijos „Git“ ir vėlesnių --recurse-submodules vietoj „ --recursive gali būti naudojami „ --recurse-submodules

 git clone --recurse-submodules -j8 git://github.com/foo/bar.git cd bar 

Redaktoriaus pastaba: -j8 yra papildomas našumo optimizavimas, kuris tapo prieinamas 2.8 versijoje ir leidžia vienu metu vienu metu gauti iki 8 modulių - žr. man git-clone .

Su 1.9 Git versija iki 2.12 versijos ( -j vėliavėlė yra prieinama tik versijoje 2. 8+):

 git clone --recursive -j8 git://github.com/foo/bar.git cd bar 

Naudojant „Git“ versiją 1.6.5 ir naujesnę versiją, galite naudoti:

 git clone --recursive git://github.com/foo/bar.git cd bar 

Jei naudojate jau klonuotas saugyklas ar senesnes „Git“ versijas, naudokite:

 git clone git://github.com/foo/bar.git cd bar git submodule update --init --recursive 
2514
14 дек. Atsakymą pateikė Mathias Bynens, gruodžio 14 d. 2010-12-14 13:43 '10, 13:43, 2010-12-14 13:43

Prieš pildydami submodulį, turite atlikti du dalykus:

 git submodule init git submodule update 
400
26 сент. atsakymas pateikiamas LiraNuna 26 sep. 2010-09-26 10:19 '10, 10:19, 2010-09-26 10:19

Originalus atsakymas 2010

Kadangi joschi yra paminėtas komentaruose, dabar git submodule palaiko --recursive parametrą (Git1.6.5 ar daugiau).

Jei --recursive , ši komanda perrašys registruotus submodulius ir atnaujins visus įdėtus submodulius.

Žr. „ Darbas su git submoduliais rekursiškai “ init daliai.
Išsamesnės git submodule ieškokite git submodule .

Naudodamiesi git ir vėlesne versija 1.6.5, galite tai padaryti automatiškai klonuodami superprojektą naudodami –- –-recursive parinktį:

 git clone --recursive git://github.com/mysociety/whatdotheyknow.git 

2016 m. Atnaujinimas su 2.8 git: žr. „ Kaip pagreitinti / git clone --recursive git submodulių pakrovimą su git clone --recursive ?

Galite inicijuoti submodulių pasirinkimą naudodami kelis siūlus lygiagrečiai.
Pavyzdžiui:

 git fetch --recurse-submodules -j2 
158
26 сент. atsakymą pateikė VonC 26 sep. 2010-09-26 11:17 '10, 11:17, 2010-09-26 11:17

Šią komandą galite naudoti, jei norite klonuoti repo su visais submoduliais:

 git clone --recursive YOUR-GIT-REPO-URL 

Arba, jei jau klonavote projektą, galite naudoti:

 git submodule init git submodule update 
50
16 окт. Atsakymą pateikė Javier C. 16 okt. 2017-10-16 18:47 '17 at 6:47 2017-10-16 18:47

Jei jūsų submodulis buvo įtrauktas į filialą, būtinai įtraukite jį į klonavimo komandą ...

 git clone -b <branch_name> --recursive <remote> <directory> 
28
08 марта '12 в 1:28 2012-03-08 01:28 atsakymą pateikė Mars Redwyne, kovo 8 d. 12 val. 1:28 2012-03-08 01:28

Pabandykite atlikti šiuos veiksmus:

 git clone --recurse-submodules 

Jis automatiškai traukia submodulio duomenis, darant prielaidą, kad jau turite papildomų modulių pridėję prie pagrindinio projekto.

22
16 янв. Atsakymą pateikė nweiler 16 sausis 2013-01-16 21:39 '13, 9:39, 2013-01-16 21:39

pavėluotas atsakymas

 // git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR 

Kadangi aš visą valandą praleidžiau su draugu: net jei turite „BitBucket“ administratoriaus teises, visada klonuokite ORIGINAL archyvą ir naudokite repo savininko slaptažodį. Tai erzina žinoti, kad jūs susiduriate su šiuo blowjob: P

17
16 февр. Atsakymą Kaiseras pateikia vasario 16 d. 2013-02-16 19:10 '13, 7:10 pm 2013-02-16 19:10

Pabandykite tai įgalinti submodulius git saugykloje.

 git clone -b <branch_name> --recursive <remote> <directory> 

arba

 git clone --recurse-submodules 
13
05 февр. atsakymą pateikė radhey shyam 05 Feb. 2018-02-05 07:54 '18 at 7:54 2018-02-05 07:54

Lygiagrečiai imant dalinius modulius siekiama sumažinti laiką, reikalingą saugykloms ir visiems su ja susijusiems submoduliams gauti, leidžiant Jums vienu metu pasirinkti kelias saugyklas. Tai galima padaryti naudodami naują --jobs parinktį, pavyzdžiui:

 git fetch --recurse-submodules --jobs=4 

Pagal „Git“ komandą tai gali žymiai pagreitinti saugyklų, kuriose yra daug modulių, atnaujinimą. Naudojant -recurse-subodules be naujo -jobs parinkties, „Git“ vienas po kito gaus submodulius.

Šaltinis: http://www.infoq.com/news/2016/03/git28- išleistas

8
06 апр. Atsakymą pateikė Long Nguyen balandžio 6 d 2016-04-06 15:07 '16 at 15:07 2016-04-06 15:07

Išbandykite.

 git clone -b <branch_name> --recursive <remote> <directory> 

Jei filialui pridėjote submodulį, įsitikinkite, kad pridėjote jį į klonavimo komandą.

1
18 июня '18 в 11:29 2018-06-18 11:29 atsakymą pateikė Himeshika96 birželio 18 d. 18 val. 11:29 2018-06-18 11:29

Manau, galite imtis 3 žingsnių,

 git clone git submodule init git submodule update 
0
16 янв. atsakymas, kurį pateikė muhammad ali Jan 16 2019-01-16 17:11 '19 , 5:11 PM 2019-01-16 17:11

Klonuojant saugyklą, galite naudoti --recursive parametrą. Ši parinktis sukelia gitą klonuoti visus apibrėžtus submodulius repo.

 git clone --recursive git@repo.org:your_repo.git 

Po filialo klonavimo kartais gali būti keičiami moduliai, todėl paleiskite šią komandą:

 git submodule foreach "git checkout master 
0
17 янв. Ahmad Azimi atsakymas sausio 17 d 2019-01-17 07:44 '19 , 7:44 am 2019-01-17 07:44

Kiti klausimai apie „ arba „ Klauskite“