Am'm încercarea de a pune un submodul într-un repo. Problema este că atunci când am clona părinte repo, submodulul dosarul este complet gol.
Există vreo modalitate de a face în așa fel încât git clona parent_repo
de fapt pune datele în submodul folder?
De exemplu, http://github.com/cwolves/sequelize/tree/master/lib/, nodejs-mysql-nativ
este îndreptat la o sursă externă de git submodul, dar când am checkout `sequelize proiect, că folderul este gol.
Cu versiunea 2.13 de Git și mai târziu, --recurse-submodulele
poate fi folosit în loc de --recursive
:
git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar
nota Editorului: -j8
este un opțional de performanță de optimizare care au devenit disponibile în versiunea 2.8, și preia până la 8 submodule la un moment dat în paralel — a se vedea om git clona
.
Cu versiunea 1.9 de Git până la versiunea 2.12 (-j
pavilion disponibile numai în versiunea 2.8+):
git clone --recursive -j8 git://github.com/foo/bar.git
cd bar
Cu versiunea 1.6.5 de Git și mai târziu, puteți folosi:
git clone --recursive git://github.com/foo/bar.git
cd bar
Pentru deja clonate repos, sau mai în vârstă Git versiuni, utilizați:
git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive
Git 2.23 (T3 2019): dacă doriți să clona și actualizarea submodule la ultima revizie a acestora:
git clone --recurse-submodules --remote-submodules
Dacă doriți doar pentru a clona le-a înregistrat SHA1:
git clone --recurse-submodules
A se vedea mai jos.
Original răspuns 2010
Ca joschi menționează în comentarii, git submodul
suportă acum --recursive
opțiune (Git1.6.5 și mai mult).
Dacă `--recursive este specificată, aceasta comanda va recurse înregistrat în submodule, și de a actualiza orice imbricate submodule termen.
A se vedea de Lucru cu git submodule recursiv pentru init parte.
Vezi git submodul
, a explicat pentru mai multe.
Cu versiunea 1.6.5 de git și mai târziu, puteți face acest lucru în mod automat prin clonare super-proiect cu
--recursive
opțiune:
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Update 2016, cu git 2.8: a se vedea "Cum pentru a accelera / paraleliza descărcări de git submodule folosind git clona --recursive`?"
Puteți iniția preluarea submodul folosind mai multe fire în paralel. Pentru cazuri:
git fetch --recurse-submodules -j2
Chiar mai bine, cu Git 2.23 (T3 2019), puteți clona si plateste submodul lor de urmărire sucursală într-o singură comandă!
A se vedea comite 4c69101 (19 Mai 2019) de Ben Avison (`).
(Fuzionat cu Junio C Hamano -- gitster
-- în comite 9476094, 17 Iunie 2019)
# "clonă": add
--de la distanță-submodulele
pavilion
atunci Când se utilizează
git clona-recurse-submodulele
nu a fost anterior nici o modalitate de a trece o--de la distanță
a comuta la implicitgit submodul update
comanda pentru orice caz de utilizare în cazul în care doriți submodulele pentru a fi verificat pe de la distanță-de urmărire ramură, mai degrabă decât cu SHA-1 a înregistrat în superproject.
Acest patch rectifică această situație. De fapt trece
... nu-i aducă " la " git submodul update
, precum și pe motiv că acestea submodulul de-abia a fost clonat, astfel încât preluarea de la distanță, din nou, doar servește pentru a încetini lucrurile în jos.
Asta înseamnă că:
--[no-]remote-submodules:
Toate submodulele care sunt clonate va folosi statutul de submodul este la distanță de urmărire ramură a actualiza submodul, mai degrabă decât superproject înregistrat SHA-1. Echivalentul a trece
--de la distanță " la " git submodul update
.
Cred ca poti sa te duci cu 3 pași:
git clone
git submodule init
git submodule update
late answer
// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://[email protected]/USERNAME/REPO.git DESTINATION_DIR
Cum mi-am petrecut o oră întreagă ține de fleacuri în jurul cu un prieten: Chiar dacă nu ai drepturi de Admin pe BitBucket, mereu clona ORIGINAL depozit și de a folosi o parolă de cel care detine repo. Enervant pentru a afla că ai intrat în acest minetrap :P
Încercați acest lucru pentru inclusiv submodule în depozit git.
git clone -b <branch_name> --recursive <remote> <directory>
sau
git clone --recurse-submodules
Puteți utiliza --recursive
pavilion atunci când clonarea unui depozit. Acest parametru forțele git clona definite toate submodulele în depozit.
git clona --recursive [email protected]:your_repo.git
După clonare, uneori submodule ramuri pot fi modificate, astfel încât să executați această comandă după ea:
git submodul foreach "git checkout maestrul"
Submodulele paralel aduce vizează reducerea timpului necesar pentru a aduce un magazii și toate legate de submodule, permițând preluarea de magazii multiple la o dată. Acest lucru poate fi realizat prin utilizarea noii ... locuri de munca opțiune, de exemplu:
git fetch --recurse-submodules --jobs=4
Potrivit Git echipa, acest lucru poate grăbi substanțial actualizarea arhive care contin multe submodule. Atunci când se utilizează --recurse-submodulele fără nou-locuri de munca opțiune, Git va aduce submodule unul câte unul.
Am avut aceeași problemă pentru un depozit GitHub. Contul meu a fost lipsă de chei SSH. Procesul este
Apoi, puteți clona depozit cu submodule (git clona --recursive TA-GIT-REPO-URL
)
sau
Rula git submodul init " și " git submodul actualizare
pentru a aduce submodule deja clonați repository.
Dacă este un proiect nou, pur și simplu, o poti face astfel :
$ git clone --recurse-submodules https://github.com/chaconinc/YourProjectName
Dacă acesta este deja instalat decât :
$ cd YourProjectName (for the cases you are not at right directory)
$ git submodule init
$ git submodule update