Kaip klonuoti konkrečią "Git" šaką?

Git klonas elgsis kopijuodamas nuotolinę dabartinę darbinę šaką į vietinę.

Ar yra koks nors būdas pačiam klonuoti konkrečią šaką neperjungiant šakų nuotolinėje saugykloje?

git clone -b  

Pavyzdys:

git clone -b my-branch git@github.com:user/myproject.git

Naudodami "Git 1.7.10" ir vėlesnes versijas, pridėkite --single-branch, kad būtų išvengta visų šakų gavimo. Pavyzdys su "OpenCV 2.4" atšaka:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Komentarai (10)
Sprendimas
git clone --single-branch --branch  

Parinktis --single-branch galioja nuo versijos 1.7.10 ir vėlesnės.

Taip pat žr. kitą atsakymą, kuriam daugelis žmonių teikia pirmenybę.

Galbūt taip pat norėsite įsitikinti, ar suprantate skirtumą. Skirtumas yra toks: iškvietę git clone --branch url, jūs gaunate visas šakas ir tikrinate vieną iš jų. Tai, pavyzdžiui, gali reikšti, kad jūsų saugykloje yra 5 kB dokumentacijos arba wiki šaka ir 5 GB duomenų šaka. Ir kai tik norėsite redaguoti pagrindinį puslapį, galiausiai gali tekti klonuoti 5 GB duomenų.

Tai nereiškia, kad git clone --branch yra netinkamas būdas tai padaryti, tiesiog ne visada norite to pasiekti, kai klausiate apie konkrečios šakos klonavimą.

Tuo metu, kai buvo rašomas pirminis atsakymas žemiau, git neturėjo --single-branch parinkties, bet išsaugokime ją, kad piktos bitės būtų visiškai patenkintos.

Atsakymas, kurio taip nemėgsta kopijuotojai, buvo toks:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
Komentarai (3)

pvz., sakykime, kad norite gauti šaką pavadinimu "branch-05142011".

git branch branch-05142011 origin/branch-05142011

Tai'jums pateiks tokį pranešimą - "Branch branch-05142011 set up to track remote branch branch-05142011 from origin."

Dabar tiesiog patikrinkite šaką, kaip nurodyta toliau, ir turėsite kodą - git checkout branch-05142011

Komentarai (5)