Soru Git uzak şubeyi getir


Meslektaşım ve ben aynı depoda çalışıyoruz, her biri farklı projeler için teknik olarak iki branşa daldık, ama benzerliklerimiz var, bu yüzden bazen şubeden * ustaya geri dönmek istiyoruz.

Ancak şubem var. Sorum şu: meslektaşım bu dalı nasıl çekebilir? bir git clone Repo'nun kendileri için yerel olarak şubeler yaratmadığı görülüyor, ancak onları bir itici güçten geçirdikten sonra kendileriyle birlikte yaşadıklarını görebiliyorum.

Ayrıca, aslında dal yaptım ben yaptım -b checkout. Bunun fark yaratıp yaratmadığından emin değil misiniz?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Bunlar koştuğum komutlar. Ama kesinlikle çalışmıyor. Bu şubeye göz atmak ve daha sonra çeşitli işbirlikçilerden veya iş istasyonlarından sadece şubelerdeki değişiklikleri değiştirmek ve geri vermek istiyorum.


1602
2018-03-02 17:06


Menşei


olası kopyası git checkout uzak şubesi - Andrew Marshall
Kullandım: git fetch --all, Tüm şubeleri görmek için: git branchSonra şubeyi kontrol ederim: git checkout nameofnewbranch - Jeff Mattson
sorunuzu kontrol edin ans https://stackoverflow.com/questions/1072261/push-and-pull-branches-in-git/47780374#47780374 - Rizo


Cevaplar:


Uzak bir dalı izleyen bir yerel şube oluşturmanız gerekir. Aşağıdaki komut, adında bir yerel şube oluşturacaktır. daves_branchUzak şubeyi izleme köken / daves_branch. Değişikliklerinizi zorladığınızda uzak şube güncellenir.

Git'in çoğu sürümü için:

git checkout --track origin/daves_branch

--track için kısa git checkout -b [branch] [remotename]/[branch] [remotename] nerede Menşei bu durumda ve [şube] iki katı aynıdır, daves_branch bu durumda.

Git 1.5.6.5 için buna ihtiyacınız vardı:

git checkout --track -b daves_branch origin/daves_branch

Git 1.7.2.3 ve üstü için bu yeterlidir (daha önce başlamış olabilir, ancak bu hızlı bir şekilde bulabildiğim en eski onay):

git checkout daves_branch

Son git sürümleriyle bu komutun yerel bir şube oluşturmayacağını ve sizi 'bağımsız HEAD' durumuna getireceğini unutmayın. Yerel bir şube istiyorsanız, --track seçeneği. Burada tam detaylar: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


2225
2018-03-02 17:45



repo'nun uzak referanslar ile güncellendiğinden emin olmak için "git getir" ve "git checkout - track origin / discover" yeterli olmalıdır. Daha sonra, bu dalıma ve uzaktan kumandayı değişikliklerinizle senkronize etmek için "git" düğmesine basabilirsiniz. - ralphtheninja
Ben bunu denedim ve "ölümcül: git checkout": güncelleme yolları şubeleri değiştirmeyle uyumsuz. İşlem olarak çözülemeyen 'upstream / develop' kontrol etmeyi mi düşündünüz? ". Yanlış bir şey mi yapıyorum? - Neil Barnwell
Git 1.5.6.5 bunun yerine ihtiyacı var gibi görünüyor: git checkout --track -b origin / daves_branch - Charlie
Bu benim için bir karışıklık yarattı, şimdi uzak şube kökü / <şube> için belirsiz olan köken / <şube> adlı yerel bir şube oluşturdu ve ben çılgın yerel şubeden nasıl kurtulacağımı bilmiyorum! - Alan Moore
Yerel şube adını açıkça eklemelisiniz, aksi halde, yukarıda belirtilen @AlanMoore ve @ derekmx271 gibi tam şube yolu ile yeni bir yerel şube oluşturur: git checkout -b --track daves_branch origin/daves_branch - Mike Scott


Kullandım fetch bunu takiben checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... nerede <rbranch> uzak şube mi kaynak ref ve <lbranch> henüz varolmayan yerel şube veya hedef ref İzlemek istediğiniz ve muhtemelen uzak şube veya kaynak ref ile aynı adı vermek istediğiniz. Bu altında açıklanmaktadır seçenekleri açıklamasında <refspec>.

Git o kadar akıllı ki ben ilk komutu otomatik olarak tamamlarsam çıkıntı uzak şubenin ilk birkaç harfinden sonra. IE: Yerel şubeye isim vermek zorunda değilim, Git otomatik olarak uzak şubenin adını benim için kopyalar. Teşekkürler Git!

Aynı zamanda Bu benzer SO yazısında cevap Yerel şubeye isim vermezseniz fetchBunu kullanarak kontrol ettiğinizde yine de oluşturabilirsiniz. -b bayrağı. IE:  git fetch <remote> <branch> bunu takiben git checkout -b <branch> <remote>/<branch> aynen benim ilk cevabımla aynı şeyi yapar. Ve eğer repo'nuz varsa sadece bir uzaktan, o zaman yapabilirsin git checkout <branch> sonra fetch ve sizin için bir yerel şube oluşturacaktır. ÖRNEĞİN: Bir repoyu klonladın ve uzaktan kumandadan başka şubelere göz atmak istiyorsun.

Belgelerin bazılarına inanıyorum fetch verbatim kopyalanmış olabilir pull. Özellikle bölüm <refspec> içinde seçenekleri aynı. Ancak buna inanmıyorum fetch asla mergeböylece kolonun hedef tarafını boş bırakırsanız fetch  hiçbir şey yapmamalı.

Bunu not et git fetch <remote> <refspec> İçin Kısa git fetch <remote> <refspec>: bu yüzden hiçbir şey yapmaz, ama git fetch <remote> <tag> aynıdır git fetch <remote> <tag>:<tag> uzak kopyalamak gerekir <tag> Yerel olarak.

Bu sadece bir uzak şube yerel olarak kopyalamak istiyorsanız, ancak hemen kontrol etmek değil, sadece yararlı olduğunu düşünüyorum. Aksi halde şimdi kullanırdım Yukarıdaki kabul edilen cevapİlk bölümde ayrıntılı olarak açıklanmıştır. ödeme açıklaması ve daha sonra seçenekleri açıklaması altında bölüm --trackçünkü 1-astarlı. İyi... 1-liner bir çeşit, çünkü sen yine kaçmak zorundasın git fetch <remote> ilk.

FYI: emri <refspecs> (source: destination) için garip pre Git-1.7 yöntemini açıklar. uzak şubeleri silme. IE: Hiçbir şey hedef refspec'e itmeyin.


744
2018-04-19 00:45



Git otomatik tamamlamasının kurulu olduğunu varsayalım. code-worrier.com/blog/autocomplete-git - antonagestam
Bu, uzak kodu yerel bir şubeye almak için çalıştı. Ancak yerel şubemi uzak şubeyi takip etmedi. - Aknosis
Bu benim için çalıştı, kabul edilen cevap yoktu. - Parthian Shot
Bazı sebeplerden dolayı, git fetch remote branch tüm refs getirilmiş olsa da, bana bir şube kafa eklemedi, bu yüzden kabul edilen cevapta adımları takip etmeye çalıştığında, ben hata aldım pathspec did not match any file(s) known to git., ama rbranch:lbranch yaklaşım çalıştı. İlginç bir şekilde, aynı önekle başlatılan tüm etiketler de getirildi;rbranch*). - haridsv
Nit: git otomatik tamamlama yapmaz, bunu yapan bash kabuğudır. - legalize


Yeni bir uzak şubeyi (yalnızca uzaktan kumandada bulunan, ancak yerel olarak bulunmayan) "ödeme" yapmaya çalışıyorsanız, ihtiyacınız olan şey:

git fetch origin
git checkout --track origin/<remote_branch_name>

Bu, almak istediğinizi varsayar. Menşei. Değilse, değiştirin Menşei senin tarafından uzak ad.


270
2018-05-17 12:14



Menşe "çekme", kafa karıştırıcı bir dildir, yukarıdaki yorumunuzu kökenden "getirme" ye değiştirmek için daha iyidir. Çekme, bir getirme ve birleştirme yapan ve kesinlikle yeni gelenleri karıştıran bir komuttur (bana dahil) - Davos
Benim için çalıştı! Şimdi notlarıma ekleyerek :) Teşekkürler! - hmd
Benim için çalıştım, doğru uzak şubeyi almadım, böylece kabul edilen cevap kafa karıştırıcı bir mesajla benim için başarısız oldu. +1 - Nathan Hinchey
Basit ve tatlı, eminim ki çoğu kullanıcı sadece bu operasyonu ilk etapta yapmak ister. - vikramvi
Her zaman aradığım şey buydu! Teşekkürler @paneer_tikka - Kris Randall


Yerel olarak değil, uzaktan var myBranch çıkış yapmak için - Bu benim için çalıştı:

git fetch --all
git checkout myBranch

Bu mesajı aldım:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

88
2017-11-12 03:36



Diğer bir deyişle, yazmak zorunda değilsiniz -t? - Andrew Samuelsen
Bence bu cevapta bir hata var. Ben aslen komutunu ben yaptım -t ve var You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. çünkü aynı ismin yerel şubesi yoktu. Tekrar çalıştırmak zorundaydım -t düzeltmek. - stanri
Bu benim için iyi çalıştı - meslektaşım yerel repo'ma eklemek istediğim yeni bir uzak şube ekledi. Getirmeye devam ettim ancak yeni şubenin yerel olarak göründüğünü görmedim. Sadece koşabileceğimin farkında değildim checkoutbunu yaratmak için. Teşekkürler! - skwidbreth
Git sürümlerine bağlıdır. En son sürüm, burada başka bir yerde de belirtildiği gibi, sadece git checkout <menşe üzerindeki dalın adı> gerekiyor. SAME-NAME LOCAL ve UZAKTAN ŞUBELER İLE DİKKATLİ OLMAK - leRobot


kullanım git branch -a (hem yerel hem de uzak şubeler) veya git branch -r tüm uzaktan kumandaları ve şubelerini görmek için (sadece uzak şubeler). Daha sonra yapabilirsin git checkout -t remotes/repo/branch uzaktan ve yerel bir şube oluşturmak.

Bu uzaktan kumanda için tüm referansları ve etiketleri görmek için bir adet ls-remote komutu da vardır.


37
2018-03-02 17:16



git checkout remotes/repo/branch Git checkout bir pathspec, bir uzak repo için değil. - Erin
Evet, uzak repoda bir şubeyi kontrol etmek mümkün mü? Tabii ki (ya da belki de çok açık değildi), uzaktan önce onları yerel olarak sahip olmanız için getirilir. Git kitabında iyi bir bölüm var: git-scm.com/book/en/Git-Branching-Remote-Branches - Daniel Lee


Başlık ve soru şaşkın:

  • Git uzak şubeyi getir
  • Meslektaşım bu dalı özellikle nasıl çekebilir?

Eğer soru uzak bir şubeye nasıl çalışacak ya da uzak bir şubeye nasıl gidileceği hakkında sorularım varsa, daha basit bir çözüm:

Git (> = 1.6.6) ile şunları kullanabilirsiniz:

git checkout <branch_name>

Yerel ise <branch_name> bulunamadı, ancak eşleşen bir ada sahip tam bir uzaktan izleme izleme var, aşağıdaki gibi davranın:

git checkout -b <branch_name> --track <remote>/<branch_name>

git checkout için belgelere bakın

Arkadaşın için:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



Teşekkürler Guillaume! Sadece bu komutu kullandım ve tam durumumu tasvir etmek için bir yazı yazdım: leniel.net/2014/05/... - Leniel Maccaferri
<! - git checkout <remote-branch-name> -> beklendiği gibi çalışıyor, teşekkürler Guillaume! - Sachidananda Naik


git checkout -b serverfix origin/serverfix

Bu, --track shorthand'i sağlayan bir ortak harekettir.

git checkout --track origin/serverfix

Aslında, bu çok yaygındır ki bu kısayol için bir kısayol bile vardır. Ödeme yapmaya çalıştığınız şube adı (a) mevcut değilse ve (b) yalnızca bir uzaktan kumandadaki bir adla tam olarak eşleşirse, Git sizin için bir izleme dalı oluşturur:

git checkout serverfix

Uzak şubeden farklı bir ada sahip bir yerel şube kurmak için, ilk sürümü farklı bir yerel şube adıyla kolayca kullanabilirsiniz:

git checkout -b sf origin/serverfix

Şimdi, yerel şubeniz sf orijini / serverfix’i otomatik olarak çekecektir.

Kaynak: Scott Chacon ve Ben Straub tarafından yazılan Pro Git 2nd Edition(okunabilirlik için kesildi)


24
2018-03-18 00:21



Eserleri! Teşekkürler! - Karl Pokus


git fetch

git branch -r

git checkout <branch_name>

12
2017-12-04 20:53