Soru Belirli bir Git dalı nasıl klonlanır? [çift]


Bu sorunun zaten bir cevabı var:

Git klonu uzaktaki mevcut çalışma dalını yerel olarak kopyalayacak.

Belirli bir şubeyi uzak depoda dalları değiştirmeden kendimce kopyalamanın bir yolu var mı?


2100
2017-12-15 23:06


Menşei


@domokun Jorge, Michael'dan bir yıl sonra cevabını ekledi. Bu yüzden sık sık, başka bir cevap zaten kabul edildikten sonra en iyi cevabın eklendiği SO'da meydana gelir. (IOW, her zaman en azından herhangi bir sorudaki en iyi 3-4 yanıtı tarayın.) - Ryan Ballantyne
@scud: Eğer hala SO'daysanız, kabul edilen cevabı düzeltmek istersiniz, böylece başkaları bunu daha kolay görebilir mi? - mikemaccana
SO cevabı düzenlemek için @Scud neden gereklidir? 5000 oydan sonra, genel toplumun doğru cevap olarak neyin işaretlendiği konusunda söz sahibi olması gerekir. - gdbj
Kabul edilen cevabı değiştirin lütfen SO moderatörler. - user1271772
Kabul edilen cevabı oylayın. Belki de negatif olursa, sonunda SO değiştirir. - user1271772


Cevaplar:


Ayrıca bkz. diğer cevap birçok insanı tercih eder.

Ayrıca, kızgın yorumcular ve downvoterin çoğunluğunun aksine, farkı anladığınızdan emin olmak isteyebilirsiniz. Ve fark şu: çağırarak git clone -b branch url sen getiriyorsun herşey şubeleri ve birini kontrol etmek. Bu, örneğin, deponuzun 5kB dokümantasyonuna veya wiki şubesine ve 5GB veri alanına sahip olduğu anlamına gelebilir. Ve ön sayfanızı düzenlemek istediğinizde, 5GB'lık veriyi klonlayabilirsiniz.

Yine, bu demek değil git clone -b Bunu başarmanın yolu değil, sadece bu değil her zaman Belirli bir dalı klonlamak istediğinizde, gerçekleştirmek istediğiniz şey.

Bugün yazacağım cevap, bugünün aklında

git clone --single-branch -b branch host:/dir.git

asıl cevabı yazarken, git no --single-branch seçenek, ama kızgın arıların tam memnuniyeti için onu koruyalım.

Fotokopi makineleri tarafından çok beğenilmeyen cevap şuydu:

git init
git remote add -t refspec remotename host:/dir.git
git fetch

240
2017-12-15 23:09



Teşekkürler. Aşağıdaki yöntemi kullanarak düşündüm. git clone <remote_repo> git checkout -b <wanted_branch> origin / <wanted_branch> git dalı -D ustası - Scud
Bence, ve [uzak "orijini" elde edersiniz) getirme = + refs / heads / (refspec): get / remotes / origin / (refspec) yerine getirme = + refs / head / *: refs / remotes / origin / * - Scud
bu daha kolay ve daha uygun stackoverflow.com/a/4568323/636762 - Syed Rakib Al Hasan
Çocuklar, asıl cevabı aşağıda gördüğünüzden emin olun. - BrainSlugs83
@Scud, lütfen diğer cevabı kabul edermisiniz, çektiğim parlak beyinlerden bıktım, her biri milyonlarca insandan farklı olarak benzersiz fikirlerine katkıda bulunmaya çalışıyor. - Michael Krelin - hacker


git clone -b <branch> <remote_repo>

Örnek:

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

Git 1.7.10 ve üstü ile, ekle --single-branch Tüm şubelerin alınmasını önlemek için OpenCV 2.4 şubesi ile örnek:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git

6683
2017-12-31 05:36



pierr: Yukarıda verilen sorunun açıklamasına cevap verip vermediğinden emin değilim. yapar asıl soruyu yanıtlayın - bir havuzun belirli bir dalını nasıl klonlayabilirsiniz. Buna oy verdim çünkü bu sayfaya geldiğim zaman için aradığım cevap. - Jaime Bellmyer
Bu çalışıyor. Projemdeki HEAD şubesinden ziyade, belirtilen branşta yeni HEAD'ı işaret ediyor. Ancak, hala getiriyor herşey dalları. @ Edmar-miyake'nin cevabı. - cdunn2001
Haberler için bu cevabı gör: stackoverflow.com/a/14930421/755257 - cbeleites
Komuta bir --dep X eklerseniz, sorunun açıklamasını yanıtlar. Bunu yaparsanız, yalnızca belirtilen dalı ve son içeriğini klonlar. - ramsvidor
thx için --single-branch; Git 2.5 bunu yazarken çıktı. Eski sürümleri umurumda değil. - Bernhard Döbler


Bir dalı klonlamak olmadan diğer şubeleri getirme:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH

222
2017-09-08 14:34



Güzel çözüm. Eski gitte (1.5.5.6 var), çıkıştan önce bir git dalı --track $ BRANCH kökü / $ BRANCH gerekebilir. - Johannes Thoma
Şube üzerinde mevcut olan etiketlere de başvurur, istediğim şey budur. (Ben aslında almak istedim çoklu dallar, ancak sadece seçilmiş olanlar; Bunun için tekrar tekrar yeterliydi remote add ve checkout o zaman burada git remote rm origin temizlemek.) - Jesse Glick
Jorge Eduardo Cardona'nın yanıtını kullanmak bana çok büyük havuzlar veriyor, bu yöntemi kullanmak bana çok temiz depolar sağlıyor. Teşekkürler. - joshcomley
Başka bir projeye özel bir git repo etiketi eklemek için mükemmel bir çözüm. İhmal edilmeyi öner -f  git uzak komutundan, ardından git fetch --depth=1 $BRANCH $TAG, sonra git checkout FETCH_HEAD. Init, zararsızdır ve değişen etiketler, kontrol edilen kodu otomatik olarak günceller. - taranaki


İşte bunu yapmak için gerçekten basit bir yol :)

Depoyu klonlayın

git clone <repository_url>

Tüm şubeleri listele

git branch -a 

İstediğiniz şubeye göz atın

git checkout <name_of_branch>

204
2017-07-14 09:42



Bu, çalışma dizinini doğru şubeye çevirdi, ancak yaptığım değişiklikleri yapamayacağım, çünkü "şu an bir dalda" değilim. - Seppo Enarvi
Bu benim için bir çözümdü, çünkü 'ustayı' zaten klonlamıştım. Uzak bir şubeyi basitçe 'kontrol edebileceğimi' bilmiyordum. - yazzer
Bu muhtemelen bunu yapmak için doğru yoldur; en iyi uygulamaları akıllıca - aaiezza
git checkout mybranchname daha sonra git getirme tamamlandı - Shohanur Rahaman
Bu yol sadece seçilen dalı klonlamaz. Bu cevap daha iyi görünüyor: stackoverflow.com/a/7349740/3075243. Örneğin, bir repo, her birini klonlamak istemeyecek kadar büyük olan çok sayıda şubeye sahipse. - Proustibat


git checkout -b <branch-name> <origin/branch_name>

örneğin benim durumumda:

 git branch -a
* master
  origin/HEAD
  origin/enum-account-number
  origin/master
  origin/rel_table_play
  origin/sugarfield_customer_number_show_c

Böylece enum-hesap numaramın şubesine dayalı yeni bir şube oluşturmak için şunu yaparım:

git checkout -b enum-account-number origin/enum-account-number

Döndükten sonra aşağıdakiler gerçekleşir:

Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number

"


69
2017-11-15 19:34



Bunun yararlı olabileceğini unutmayın. git pull origin ilk önce git branch -a tüm yeni (mevcut) uzak şubeleri listeleyebilir. - André Caron
İyi bir nokta. Muhtemelen git fetch o kadar iyi ki, otomatik birleşme gerçekleşmez. - dkinzer


Bu sistemle yerel sistemde bir şube oluşturun. Örneğin. dal adını almak istediğini söyle "Dal-05142011"

git branch branch-05142011 origin/branch-05142011 

Size bir mesaj verecek - "Şube şube-05142011 menşe uzak şube şube-05142011 izlemek için kuruldu."

Şimdi sadece aşağıdaki gibi şube kontrol edin ve kodu var -
git checkout branch-05142011


20
2018-05-15 19:20



Bu da yapacak: git getirme kaynağı [uzak dal]: [yeni yerel şube] - PlanetUnknown
Doğru mu? Miyake (aşağıda), uzaktan eklendiğinde nasıl yapılacağını gösterir. - cdunn2001
Diyelim ki, "Gezegen bilinmiyorsa doğru." - cdunn2001
@PlanetUnknown için teşekkürler git fetch origin [remote-branch]:[new-local-branch], Bunu sevdim! - Jeaf Gilbert


git --branch <branchname> <url>

Fakat bash tamamlanması bu anahtarı alamıyor: --branch

Keyfini çıkarın.


11
2017-09-07 10:16