Soru Uzak Git dalını nasıl kontrol edebilirim?


Birisi aradı bir şube itti test ile git push origin test paylaşılan bir depoya. Şubesini görebilirim git branch -r.

Şimdi uzaktan kontrol etmeye çalışıyorum test dalı.

Denedim:

  • git checkout test hiçbir şey yapmaz

  • git checkout origin/test verir * (no branch). Bu kafa karıştırıcı. "Şube yok" da nasıl olabilirim?

Uzak Git dalını nasıl kontrol edebilirim?


5316
2017-11-23 14:23


Menşei


@inger Ancak, yeni yerel şubeyi yeniden adlandırma olasılığını içermez (eğer daha sonra --set-upstream yapmak ve adlandırma tutarlılığını korumak istiyorsanız) - fachexot
Bu iş parçacığının yararsız olduğunu düşünüyorum. Hiçbir şey işe yaramıyor gibi görünüyor, orijinal soru cevapların çoğunda kaybolmuş gibi görünüyor. Her kelimeyi okudum, aşağıda her şeyi denedim ve OP'nin yapmak istediği şeyi nasıl yapacağını bilmiyorum. - Tony Ennis
Git komutları başlamak için sezgisel değildir, son sürümlerde tanıtılan değişiklikleri karışıma ekler ve bu sayfaya sahip olursunuz ... - Christophe Roussy
Çılgın hapları alıyorum gibi hissediyorum. Bir şubeden bir şubeyi kontrol etmeye çalışıyorum upstreamdeğil, sadece originve önerilen her cevap, uzaktan yardımcı herhangi bir şey yapmaz (punto amaçlı). DÜZENLE - Özür dilerim, ilk 2 cevapta yer alan çok sayıda öneri işe yaramazdı; 3. bir (git branch test origin/test) ne işe yarıyor. En iyi 2, 20x oy sayısı var sevindim ... - dwanderson
Belki çalışma ağacınızda 'test' adlı bir dosyanız var. stackoverflow.com/a/45006389/792416 detay için. - oldman


Cevaplar:


Güncelleştirme

Jakub'un cevabı Aslında bunu geliştirir. Git sürümleri ≥ 1.6.6 ile şunları yapabilirsiniz:

git fetch
git checkout test

(Kullanıcı masukomi bunun altını çiziyor git checkout test Eğer birden fazla uzaktan kumanda varsa modern git çalışmıyor. Bu durumda kullanım git checkout -b test <name of remote>/test).

Eski Cevap

Uzak bir şubede yerel olarak çalışmaya başlamadan önce, aşağıdaki yanıtlarda çağrıldığı şekilde getirmeniz gerekir.

Bir dal almak için yapmanız gerekenler:

git fetch origin

Bu, tüm uzak şubeleri sizin için getirecektir. Ödeme için mevcut şubeleri şununla birlikte görebilirsiniz:

git branch -v -a

Elinizde bulunan uzak şubelerle, şimdi ilgilendiğiniz şubeye bakmanız ve size yerel bir çalışma kopyası sunmanız gerekiyor:

git checkout -b test origin/test

7366
2017-11-23 14:26



Bunu genişletmek için: git başkasının dallarında çalışmanıza izin vermez. Sadece kendi başına çalışabilirsin. Başka birisinin şubesine eklemek istiyorsanız, o dalın kendi "kopyasını" oluşturmanız gerekir, bu da yukarıdaki komutun yaptığı şeydir (iyi, şubenizi yaratır ve onu da kontrol eder). - Dan Moulding
Yeni bir uzak şube ise, gerekebilir git fetch Bunu yapmadan önce git farkında origin/test - Neil Sarkar
... bunu yaparsın git fetch origin test - Andrew
Hata: "git checkout: güncelleme yolları, şube değiştirme ile uyumlu değil. origin/test hangi taahhüt olarak çözülemez? " - Xeoncross
git checkout testmodern git çalışacak aynı şube adı olan birden fazla uzaktan kumanda varsa. Hangisini kullanacağını bilemez. - masukomi


Kenar notu: Modern Git ile (> = 1.6.6), sadece kullanabilirsiniz

git checkout test

(büyülü yapmak için 'test' değil 'origin / test' olduğunu unutmayın) DWIM-çalışma ve sizin için yerel şubesi 'testi' oluşturun, bunun için uzak takip dalı 'kökeni / testi' olacaktır.


* (no branch) içinde git branch çıkış, adlandırılmamış dalda, "ayrılmış HEAD" durumunda (HEAD, doğrudan işlemek için işaret eder ve bazı yerel dallara sembolik referans olmamak demektir) anlamına gelir. Bu adlandırılmamış dalda bazı işlemler yaparsanız, her zaman geçerli şubeden yerel şube oluşturabilirsiniz:

git checkout -b test HEAD

1092
2017-11-24 00:17



Şaşırtıcı olmayan, ancak bu sürüm son birkaç yıl içinde piyasaya sürüldü - bu sözdizimini bilmek çok fazla zaman kazandırabilir, çünkü eski belge ve yorum parçacıkları, bunun için eski yöntemi öneren bir çok şey vardır. - Curtis
"modern git" - kayıt için, (yaklaşık) hangi versiyona başvuruyorsunuz? Bazen eski dağıtım yapan sistemlerde çalışmak zorundayız. - Craig McQueen
Bu bağlamda "modern git" git 1.6.6 - Bobby Norton
@aidan gibi bir yanıt alırsanız error: pathspec 'branch_name' did not match any file(s) known to git. o zaman önce bir git getirmelisin. - Dennis
Git sürüm 1.8.3.msysgit.0 kullanarak ve bu benim için işe yaramazsa - Git bilinen herhangi bir dosyayla eşleşmedi - Birçok git getirme yaptım - PandaWood


Bu durumda, muhtemelen bir yerel oluşturmak istersiniz test uzaktan takip eden şube test şube:

$ git branch test origin/test

Önceki sürümlerinde git, açık bir şeye ihtiyacın vardı --track seçeneği, ancak uzak bir şubeden ayrılırken varsayılan olan budur.


478
2017-11-23 14:27



Bu, ona geçiş yapmadan bir yerel şube oluşturacaktır. - Alex.Designworks
Ölümcül olmama rağmen: Belirsiz nesne adı: 'kökeni / dev' - kökeni 'dev' kökeni kesinlikle var - ama yanlışlıkla makinemde "origin / dev" adlı bir dal yaratmıştım (önceki aptal girişimlerimde) bunu haklı çıkarmak için, hiç şüphesiz) - PandaWood
Bu bana hata hatasını veriyor: bazı refs'leri ipucu vermeyi başaramadı: Güncelleştirmeler reddedildi çünkü itilmiş bir şube ipucu uzak ipucunun gerisinde kalıyordu: muadili. Bu dalı inceleyin ve uzaktan değişiklikleri birleştirin: Tekrar basmadan önce (ör. Git git). İpucu: Ayrıntılar için 'git push - help' bölümünde 'Hızlı ileri' ile ilgili not'a bakın. - pal4life
git branch test benim için çalışıyor - Isaac Pak


Kabul cevabı senin için çalışmıyor mu?

İlk ve seçilen cevap teknik olarak doğruHenüz uzaktaki depodan tüm nesneleri ve referansları alma olasılığınız var. Bu durumda, aşağıdaki hatayı alırsınız:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: güncelleme yolları, anahtarlama dalları ile uyumsuz.
  İşlem olarak çözülemeyen 'origin / remote_branch' çıkışını mı yapmak istediniz?

Çözüm

Bu mesajı alırsanız, önce bir git fetch origin nerede origin çalıştırmadan önce uzak deponun adıdır git checkout remote_branch. İşte yanıtları olan tam bir örnek:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Gördüğünüz gibi git fetch origin Yerel makinemizde izlemek için henüz kurulum yapmadığımız tüm uzak şubeleri aldık. Oradan, artık uzak şubeye bir refere sahip olduğumuzdan, sadece koşabiliriz git checkout remote_branch ve uzaktan izlemenin faydalarını elde edeceğiz.


395
2017-12-07 20:52



Yerel olarak ayrı bir şubeye sahipseniz bir not ekleyeceğim: 'Remote add origin [the_path_to_your_repo / repo_name.git]' komutunu kullanarak uzak yanıtla ilişkilendirdiğinizden emin olun. Daha sonra, 'kökeni kökeni'ni kullanın; burada' kökeni ', ilişkilendirmeyi yaptığınız başlangıç ​​kaynağı anlamına gelir. - elliotrock
git checkout -b newbranch Ayrıca, mevcut şubeye dayalı olarak 1 adımlı oluşturma ve ödeme için yeni bir dal çalışması için harika çalışıyor. - Linus
Bu en güncel olduğunu düşünüyorum ($ @ #! İng değişmeye devam ediyor!). Git 2.5.5 Aslında tek yolu buldum görmek uzak şubeler git ls-remote ve aslında birini kullanmanın tek yolu git checkout -b [branch] --track [remote/branch]...ve bu sonra  git pull [remote] [branch] çalıştı. Evet, aslında tüm şubeyi çekti, ama yine de bunu listelemedi. - delicateLatticeworkFever
ve bu cevap işe yaramadığında, bkz. Bu. - eis


Yukarıdaki çözümü denedim, ama işe yaramadı. Bunu dene, işe yarıyor:

git fetch origin 'remote_branch':'local_branch_name'

Bu, uzak şubeyi getirecek ve adla birlikte yeni bir yerel şube (zaten mevcut değilse) oluşturacaktır. local_branch_nameve uzaktan kumandayı takip edin.


176
2017-10-18 05:55



Bu, ne git getirme kaynağı ne de git uzak güncelleştirmesi yerel şubeler oluşturulmadığında benim için çalıştı. Neden olduğundan emin değilim. - Godsmith
Bu, yeni bir şube oluşturmak için uzak bir şubeyi (ana değil) kullanmak için ihtiyaç duyduğum şeyi başarmanın en doğrudan yoluydu. - Roralee
Özellikle çok şubeli bir uzaktan kumandadan tek bir dalı klonladığında, sorunsuz bir şekilde çalıştı. - Alex C
Bu benim için de çalıştı, kabul edilen cevaplar ve diğer yüksek oyların olmadığı yerde. Git sürüm 2.5.0 - pdepmcp
Her şeyin neden olmadığı, bunun neden işe yaradığı hakkında bir fikri olan var mı? (Git 2.13.0'deyim) - Nathan Arthur


Bu irade DWIM menşe adlı bir uzaktan kumanda (belgeleme):

$ git checkout -t remote_name/remote_branch

Yeni bir uzaktan kumanda eklemek için önce aşağıdakileri yapmanız gerekir:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Birincisi uzaktaki Git'i söyler, ikincisi ise işi alır.


100
2018-04-27 22:37





kullanın:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Diğer cevaplar benign vakada modern Git ile çalışmaz. Uzak şube yeni ise ilk önce çekmeniz gerekebilir, ancak bu durumu kontrol etmedim.


89
2018-02-21 10:58



Bunun bir özü olduğunu biliyor musunuz? Cevap - Thomas Ayoub
Şimdi baktığımızda üst üste geliyorlar. Sadece benimki kısadır ve size bir hikaye anlatmak yerine ne yapacağınızı söyler. Bu nedenle, özellikle günümüzde git sürümleri için daha kullanışlı olabileceğini düşünüyorum. Kötü bir cevap olduğunu düşünüyorsanız bunu reddedebilirsiniz. - matanster


Git deposunu kopyalamak için şunu yapın:

git clone <either ssh url /http url>

Yukarıdaki komut tüm şubeleri kontrol eder, ancak sadece master şube başlatılacak. Diğer şubeleri kontrol etmek isterseniz şunları yapın:

git checkout -t origin/future_branch (for example)

Bu komut uzak şubeyi kontrol eder ve yerel şube adınız uzak şube ile aynı olacaktır.

Yerel şube adınızı checkout'ta geçersiz kılmak istiyorsanız:

git checkout -t -b enhancement origin/future_branch

Şimdi yerel şube adınız enhancementama uzak şube adın future_branch.

belgeleme


45
2018-01-21 10:04



git clone <ya ssh url / http url> - benim için mükemmel çalışıyor - Kmeixner
Evet haklısın. Bilgileriniz için teşekkürler, çok yakında güncelleyeceğim @warvariuc - Madhan Ayyasamy
Uzaktan kumanda varsa masterBu işe yaramayacak. - polkovnikov.ph


tamamCevap çok kolay ... Temelde dalı görüyorsun, ama henüz yerel bir kopyasın yok ...

Gerek fetch Şube...

Basit bir şekilde şubeye gidip ödeme yapabilirsiniz, bunu yapmak için aşağıdaki bir satır komutunu kullanın:

git fetch && git checkout test

Farklılıkları paylaşmak için aşağıdaki görüntüyü de oluşturdum. fetch işler ve nasıl farklı olduğu pull:

git fetch


42
2017-09-05 14:20



Harika resim, teşekkürler - developer
Yerel şube yoksa işe yaramaz test - Dmitri Zaitsev
@DmitriZaitsev evet, uzaktan şube varsa ve işe yararsa işe yarayacak, şubeyi yerel olarak alacaksınız ... git fetch && git ödeme testi ... Bu çalışma, uzak bir şube olmadığı sürece, ancak Orada zaten uzak bir şube olduğunu söyleyen soru ... - Alireza
Soruyu görme şekli test Yeni bir dal gibi görünüyor, bu yüzden yerel olarak mevcut olması olası değil. Aksi taktirde, beklemeyi daha kolay yapabilirsiniz. git pull Komut. - Dmitri Zaitsev
@DmitriZaitsev, evet, bu yüzden git getirme demiştim, bu sadece yaratılan uzak dallar için kontrol et, çekin diğer istenmeyen maddeleri içeri getirebilir, ancak eğer repo yerel olarak repoya sahip olursanız ... - Alireza


Deneyebilirsin

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

veya

git fetch
git checkout -b local_branch_name origin/branch_name

27
2018-03-24 13:11



Bilginize, --track git'in daha yeni sürümlerinde artık gerekli değildir, çünkü varsayılan olarak bu önceki cevap.