Git kullanarak belirli bir dalı getir


19

Xilinx wiki'de açıklandığı gibi git'i kullanarak master-next şubesinden kaynak kodunu indirmek istiyorum .

Bunu denedim:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

Bu bile başarısız oldu:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

Çalışan komut:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

Ama bunun gerçekten de ana dalı değil, bir sonraki ana dalı getireceğini nasıl bilebilirim ? Git kullanarak belirli bir dalı nasıl doğru şekilde getirebilirim?

PuTTY üzerinden erişilen RHEL 6 kullanıyorum.

Yanıtlar:


16

Hata mesajının söylediği gibi, git clonegit deposunu bekler. Yoldaki böyle bir dalın adını "ekleyemezsiniz". Git'teki şubelere bakınız .

Tek bir dalı klonlayabilirsiniz (ve geçmişi): git clone <url> --branch <branch> --single-branch

Bkz git help clone.

Ama koştuğunuz klon komutu size tüm deponun bir kopyasını verdi, mevcut şubeleri git branchve onlarla ilgili daha fazla ayrıntıyı görebilirsiniz git show-branch.

İle istediğiniz şubeye geçin git checkout branch-name.

Pro Git kitabının ilk bölümleri (çevrimiçi olarak mevcuttur) temel komutlar hakkında daha fazla ayrıntı verir.


"koştuğunuz klon komutu size tüm deponun bir kopyasını verdi". tüm depo her iki dalın birleştirildiği anlamına mı geliyor?
user2799508

Hayır, birleştirilmezler. Git'teki bir şube, burada açıklandığı gibi tüm dizinin bir kopyası değildir .
Leiaz

Ben ne yaptım: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " bu doğru değil mi?
user2799508

Artık klonlamaya gerek yoktu. Sorunuzda gösterdiğiniz komut size tüm şubeleri içeren havuzu verdi. Ancak bu da doğrudur. git checkout master-nextKlonlamadan sonra yapmaya eşdeğerdir .
Leiaz

13

Bu komutun çalışması gerekir:

$ git fetch origin [branch]

Yukarıdaki komut meta verileri yalnızca uzak depodan alır, kaynakları birleştirmez.

Kaynakları almak ve birleştirmek istiyorsanız, komut şöyle olur:

$ git pull origin [branch]

Birleştirme komutunu yürüttüğünüz şubeye dikkat edin. Kaynakların birleştirildiği yer burası olacaktır.


Cevabınız teknik olarak doğru ancak bazı gramer kontrol / yeniden yazma işlemlerinden fayda sağlayabileceğini düşünüyorum.
Sami Laine

Bu güzel thx çalışır
nwgat

4

git depoları tüm dalları içerir (ancak sıkıştırılmış ve yalnızca farklılıklar dolayısıyla nadiren bir boyut sorunu).

Bu nedenle, başarılı bir şekilde yaptığınız gibi tüm projeyi klonlayabilirsiniz. Bu, yalnızca bir şubeye ilgi duysanız bile depo almanın standart bir yoludur.

.Git yapısı daha sonra bu depoda yapılan tüm dalları içerecektir .

Belirli bir şubeyi kullanmak için Yapın Şube git checkout [branch_name] varsa dosyalar yerel olarak kullanılabilir hale getirilecektir (aynen proje dizinlerindeki mevcut dosyalar).

git status sonra hangi dalın geçerli dal olduğunu gösterecektir, örneğin:

Leiaz'a göre kişi belirli bir dalı klonlayabilir. Uygulamada bunu hiç yapmadım veya başkalarının kullandığını gördüm. Daha ileri araştırmalarda, git 1.7.10 (Nisan 2012) 'de nispeten yeni olduğunu görüyorum:' git klonu öğrenildi - tek dal 'seçeneği klonlamayı tek bir dalla sınırlama (sürpriz!); dalın tarihine işaret etmeyen etiketler getirilmez. Örneğin:

git clone -b master-next --single-branch git://github.com/Xilinx/

resim açıklamasını buraya girin Burada, "linker" uygulamam için şubeye bakıyorum v3.0.10


1
Ben de hiç yapmadım, seçeneği gördüğümü hatırladım. Ekstra dalları "ucuz" boyut olarak nadiren kullanılır sanırım.
Leiaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.