Git ile şube nasıl indirilir?


214

GitHub'da barındırılan bir projem var. Bir bilgisayarda bir şube oluşturdum, sonra değişiklikleri ile GitHub'a ittim:

git push origin branch-name

Şimdi farklı bir bilgisayardayım ve o dalı indirmek istiyorum. Bu yüzden denedim:

git pull origin branch-name

... ama bütün bunlar yeni dalımdaki değişikliklerle usta dalımın üzerine yazmaktı.

Mevcut şubelerin üzerine yazmadan uzak şubemi düzgün bir şekilde çekmek için ne yapmam gerekir?

Yanıtlar:


377

İlgili bir soru sayesinde , uzak dalı yeni bir yerel şube olarak "kullanıma almam" ve yeni bir yerel şube adı belirtmem gerektiğini öğrendim.

git checkout -b newlocalbranchname origin/branch-name

Veya şunları yapabilirsiniz:

git checkout -t origin/branch-name

İkincisi, uzak dalı izlemek için ayarlanmış bir dal oluşturur.


Güncelleme: Bu soruyu aslen yayınlamamın üzerinden 5 yıl geçti. Çok şey öğrendim ve git o zamandan beri gelişti. Her zamanki iş akışım şimdi biraz farklı.

Uzak dalları almak istiyorsam, sadece şunu çalıştırıyorum:

git pull

Bu, tüm uzak dalları getirir ve geçerli dalı birleştirir. Şuna benzer bir çıktı görüntüler:

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

Git git benim yeni bilgilerimi biliyor my-bugfix-branch. Bu şubeye geçmek için şunları yapabilirim:

git checkout my-bugfix-branch

Normalde, şubeyi kontrol etmeden önce oluşturmam gerekirdi, ancak git'in yeni sürümlerinde , bu uzak dalın yerel bir kopyasını kontrol etmek istediğinizi bilmek yeterince akıllı .


Ben GIT 1.7.2.5 kullanıyorum ve benim için çalıştı komut oldu: git branch --track XX origin/XX. Komutun bana bir hata veriyor.
dimitarvp

8
Tüm uzak şubeleri indirmediyseniz bu başarısız olabilir. Aşağı çekmek için "git uzaktan güncelleme" işlevini uygulayın.
Ben Walding

1
Aslında, daha kısa "git checkout branch-name" olabilir. Şube adı bir uzaktan izleme şubesiyle (yani, başlangıç ​​/ şube adı) aynı ise, otomatik olarak bir yerel izleme şubesidir.
DavidN

64

Benim gibi Git yeni başlayanlar için, uzak bir depo indirmek ve ardından görüntülemek istediğiniz şubeye geçmek için izleyebileceğiniz bazı adımlar. Muhtemelen Git'i bir şekilde kötüye kullanıyorlar, ama bu benim için işi yaptı! :-)

Kodunu indirmek istediğiniz havuzu klonlayın (bu örnekte Github'daki LRResty projesini seçtim ):

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

Bu noktada hangi dalı kullandığınızı kontrol edin (ana dal olmalıdır):

$ git branch    
* master

İstediğiniz şubeye bakın, benim durumumda 'yaylı' denir:

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

Şimdi istediğiniz dalı kullandığınızı doğrulayın:

$ git branch    
* arcified
  master

Kodu daha sonra tekrar güncellemek istiyorsanız, şunu çalıştırın git pull:

$ git pull
Already up-to-date.

"Git'i bir şekilde kötüye kullanıyorlar" - hayır, bu kesinlikle doğru.
Büyük McLargeHuge

28

Git Remote'u şu şekilde kullanabilirsiniz:

git fetch origin

ve ardından uzak dalı aşağıdaki gibi izlemek için bir yerel şube ayarlayın:

git branch --track [local-branch-name] origin/remote-branch-name

Artık yerel şube adında uzak github dalının içeriğine sahip olacaksınız.

Bu yerel şube adına geçebilir ve çalışmaya başlayabilirsiniz:

git checkout [local-branch-name]

18

kullanabilirsiniz :

git clone <url> --branch <branch>

sadece şubenin içeriğini klonlamak / indirmek için.

Bu benim için özellikle yardımcı oldu, çünkü dalımın içeriği ana daldan tamamen farklıydı (genellikle durum böyle olmasa da). Bu nedenle, yukarıda başkaları tarafından listelenen öneriler bana yardımcı olmadı ve ben bile şube teslim ve git çekme yaptıktan sonra bile ustanın bir kopyasını almak olurdu.

Bu komut size doğrudan şubenin içeriğini verecektir. Benim için çalıştı.


1
Bu en iyi cevap. Basit ve etkili.
derek

2
Bu benim için işe yaramıyor. Zaten bu isimle bir klasör var (ki elbette var)
diyor

1
@Jonathan Mevcut şubenize yeni bir dal eklemeyecektir. Yalnızca yeni bir kopyayı klonlamak için kullanılabilir. Depoyu klonlamadıysanız neden bu ada sahip bir klasör olması gerektiğini anlamıyorum. Farklı bir yerde klonlamayı deneyin.
Old Markus

Mevcut bir projeyi yeni şubeyle güncellemez
Dazzle

16

Yeni makinenizde git on git bash'dan indirmek istediğiniz klasöre gidin.

Kodu istediğiniz herhangi bir şubeden indirmek için aşağıdaki komutu kullanın

git clone 'git ssh url' -b 'Branch Name'

İlgili şube kodunu indirecektir.


9

Repo adında Git klonu ve cd'si:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

İstediğim şubeye (GitHub sayfası) geç:

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

Ve şubeyi çekin:

$ git pull
Already up-to-date.

ls:

$ ls
index.html      params.json     stylesheets


0

Deneyebilirsin

git fetch <remoteName> <branchName>

Örneğin:

git fetch origin MyRemoteBranch

-8

Yeni bir dizin oluşturun ve bunun yerine bir klon yapın.

git clone (başlangıç ​​adresi) (şube adı)


3
Git'te yalnızca bir dalı klonlayamazsınız . Sadece tam bir depo klonu yapılabilir.
Alan Haggai Alavi
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.