Uzak bir git şubesi nasıl kontrol edilir?

Birisi git push origin test test adındaki bir şubeyi ortak bir depoya tıkladı. git branch -r bir dal görüyorum git branch -r .

Şimdi uzak dal test test etmeye çalışıyorum.

Denedim:

  • hiçbir şey yapmayan git checkout test

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

Uzak bir git şubesi nasıl kontrol edilir?

5758
23 нояб. 23 Kasım’da Juri Glass tarafından 2009-11-23 17:23 '09, 17:23 2009-11-23 17:23
@ 26 cevaplar

güncelleştirme

Yakub’un cevabı aslında bunu iyileştirir. Git sürümleri remote 1.6.6 ile bir uzaktan kumanda, basitçe:

 git fetch git checkout test 

Kullanıcı masukomi yorumunda belirtildiği gibi, birden fazla konsolunuz varsa, git checkout test modern git'te çalışmayacak. Bu durumda, kullan

 git checkout -b test <name of remote>/test 

veya steno

 git checkout -t <name of remote>/test 

Eski cevap

Yerel bir işe uzak bir şubeyle başlamadan önce, aşağıdaki cevaplarda belirtildiği gibi çalışmanız gerekir.

Şube almak için yapmanız gerekenler:

 git fetch origin 

Bu size tüm uzak şubeleri getirecektir. Sipariş vermek için uygun şubeleri görebilirsiniz:

 git branch -v -a 

Artık uzak bir şubeniz olduğuna göre, size yerel bir çalışan kopya sunarak ilgilendiğiniz şubeyi kontrol etmeniz gerekir:

 git checkout -b test origin/test 
7947
23 нояб. Cevap hallski 23 Kasım'da verildi. 2009-11-23 17:26 '09, 17:26, 2009-11-23 17:26

Sidenote: Modern Git (> = 1.6.6 ) ile sadece kullanabilirsiniz

 git checkout test 

(bunun 'test' olmadığını 'baş>DWIM'ini gerçekleştirin ve sizin için yukarı akış noktasını "kaynak / test" in uzaktan izleyeceği yerel bir dal' test 'oluşturun.

border=0

git branch * (no branch) çıktısı, "bağlantısız HEAD" (adsız) adı verilen bir adsız dalda olduğunuz anlamına gelir (HEAD doğrudan taahhüt başvurusuna atıfta bulunur ve bazı yerel dallara sembolik bir bağlantı değildir). Bu adsız dalda bazı taahhütlerde bulunduysanız, her zaman geçerli taahhüdle yerel bir dal oluşturabilirsiniz:

 git checkout -b test HEAD 
1147
24 нояб. Tarafından verilen cevap Jakub Narębski 24 Kasım 2009-11-24 03:17 '09, 3:17 2009-11-24 03:17

Bu durumda, muhtemelen uzak test dalını izleyen yerel bir test dalı oluşturmak istersiniz:

 $ git branch test origin/test 

--track önceki sürümlerinde, açık bir --track seçeneğine ihtiyacınız vardı, ancak bu, uzak bir dalı --track varsayılan --track .

508
23 нояб. Cevap 23 Kasım'da verildi. 2009-11-23 17:27 '09, 17:27 2009-11-23 17:27

Kabul edilen cevap sizin için çalışmıyor mu?

İlk ve seçilen cevap teknik olarak doğru olsa da, uzaktaki depodan tüm nesneleri ve bağlantıları henüz almadığınız bir olasılık var. Öyleyse, aşağıdaki hatayı alırsınız:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: güncelleme yolları, anahtarlama şubeleriyle uyumlu değil.
Taahhüt olarak çözülemeyen "origin / remote_branch" ı kontrol etmeyi düşündünüz mü?

karar

Bu mesajı alırsanız, ilk önce git checkout remote_branch çalıştırmadan önce, origin uzak git checkout remote_branch adı olduğu git fetch origin yapmanız gerekir. İşte cevapları ile 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 çıkarılan uzak dalların git fetch origin çalıştırdığımızda, yerel makinemizde henüz izlemeyi yapılandırmadık. Oradan, şimdi uzak bir şubeye bir bağlantımız olduğu için, git checkout remote_branch çalıştırabiliriz ve uzaktan izlemenin avantajlarından yararlanabiliriz.

421
07 дек. Tarafından cevap Corey Ballou 07 Ara 2012-12-07 23:52 '12 11:52, 2012-12-07 23:52

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

 git fetch origin 'remote_branch':'local_branch_name' 

Bu, uzak şubeye götürür ve (eğer önceden mevcut değilse) local_branch_name adıyla yeni bir yerel şube oluşturur ve silinmesini izler.

208
18 окт. Cevap Yaz Sahil kalra 18 ek. 2013-10-18 08:55 '13 8:55 2013-10-18 08:55

Bu adsız uzak adın ( belgeler ) için DWIM'i olacaktır:

 $ git checkout -t remote_name/remote_branch 

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

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Birincisi Git'in uzaktan erişimini söyler, ikincisi taahhüt eder.

104
28 апр. yanıtladı tacaswell 28 Nis 2012-04-28 01:37 '12, 1:37 2012-04-28 01:37

kullanın:

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

Benign durumumda diğer cevaplar modern Git ile çalışmıyor. Uzaktaki şube yeniyse önce göç etmeniz gerekebilir, ancak bu durumu kontrol etmedim.

98
21 февр. Cevap matanster tarafından 21 Şubat'ta verildi . 2016-02-21 13:58 '16, 13:58, 2016-02-21 13:58

Cevap basit, basitçe bir şube görüyorsunuz, ancak henüz yerel bir kopyasınız yok! ...

fetch dal fetch ...

Bunu yapmak için aşağıdaki satır komutunu kullanarak bir şubeye sipariş alıp verebilirsiniz:

 git fetch  git checkout test 

Ayrıca, bir resim oluşturdum, böylece farklarınızı paylaşabilirsiniz, fetch nasıl çalıştığını ve nasıl pull :

2019

05 сент. Cevap Alireza 05 Eylül. 2017-09-05 17:20 '17, 17:20, 2017-09-05 17:20

Git deposunu klonlamak için, şunu çalıştırın:

 git clone <either ssh url /http url> 

Yukarıdaki komut tüm dalları kontrol eder, ancak yalnızca master dal başlatılır. Diğer dalları kontrol etmek istiyorsanız, aşağıdaki adımları izleyin:

 git checkout -t origin/future_branch (for example) 

Bu komut uzak şubeyi kontrol eder ve yerel şubenizin adı uzak şubeyle aynıdır.

Kasada yerel şubenin adını geçersiz kılmak istiyorsanız:

 git checkout -t -b enhancement origin/future_branch 

Şimdi yerel şube adınız enhancement , ancak uzak şube adınız future_branch .

belgeleme

48
21 янв. Cevap Madhan Ayyasamy 21 Ocak. 2013-01-21 13:04 13, 13:04 2013-01-21 13:04

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 
31
24 марта '14 в 16:11 2014-03-24 16:11 Cevap uma 24 Mart ' 14'te 16 :11'de verildi 2014-03-24 16:11

İlk önce yapmanız gerekenler:

git fetch # dalın adını bilmiyorsanız

 git fetch origin branch_name 

İkincisi, uzak şubenizi bulunduğunuz bölgeye göre kontrol edebilirsiniz:

 git checkout -b branch_name origin/branch_name 

-b , seçilen uzak daldan belirtilen adda yeni bir dal oluşturur.

27
18 мая '17 в 16:55 2017-05-18 16:55 Cevap 18 Mayıs 17, Mohideen ibn Mohammed tarafından 16:55 2017-05-18 16:55 tarihinde verilir.

komutlar

 git fetch --all git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name> 

eşittir

  git fetch --all 

ve sonra

  git checkout -b fixes_for_dev origin/development 

Her ikisi de latest fixes_for_dev yaratacak

25
21 апр. Cevap sreekumar 21 Nis tarafından verilmiştir. 2016-04-21 22:10 '16, 10:10, 2016-04-21 22:10

Aşağıdaki komutu kullanıyorum:

 git checkout --track origin/other_remote_branch 
23
06 сент. Cevap priyankvex 06 eylül . 2017-09-06 17:41 '17, 17:41, 2017-09-06 17:41

Şube uzak origin şey origin , aşağıdakileri yapmak isterim:

 $ git fetch $ git checkout -b second/next upstream/next 

Bu, uzaktaki upstream sunucusundaki bir next dalı second/next adlı yerel dalda kontrol eder. Bu, eğer zaten adında bir yerel şubeniz varsa, çatışmayacak demektir.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Cevap 01.03.13.03 tarihinde 13:00 de 13:00 2013-03-01 13:00 tarihinde Kris tarafından verilmiştir.

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 Cevap Inder Kumar Rathore’a 26 Mart 14:00 ' te 10:00 2014-03-26 10:00

git branch -r , nesnenin adının geçersiz olduğunu, çünkü bu dalın adı yerel Git dalları listesinde olmadığını söylüyor. Yerel şube listenizi kaynağından aşağıdakilerle güncelleyin:

 git remote update 

Ardından uzaktaki dalı kontrol etmek için tekrar deneyin.

Benim için çalıştı.

git fetch orijinal posterin istemediği tüm uzak dalları çektiğine inanıyorum.

15
06 июня '13 в 15:21 2013-06-06 15:21 Cevap webdevguy tarafından 06 Haziran 13, 15 : 21'de verilmiştir 2013-06-06 15:21

bu cevapların hiçbiri benim için çalıştı. işe yaradı:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 Cevap 10 Temmuz 18'de brianyang tarafından 05:11 2018-07-10 :11 tarihinde verilmektedir.

git remote show <origin name> komutu tüm dalların bir listesini görüntüler (izlenmeyen dallar dahil). Sonra çıkarmak istediğiniz uzak dalın adını bulabilirsiniz.

örnek:

 $ git remote show origin 

Uzak dalları çıkarmak için bu adımları kullanın:

 git fetch <origin name> <remote branch name>:<local branch name> git checkout <local branch name > (local branch name should the name that you given fetching) 

örnek:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Cevap Thushan tarafından verildi 07 Ocak 2018-01-07 16:12 '18, 04:12, 2018-01-07 16:12

Diğer erkekler ve kızlar çözümler sunar, ama belki nedenini size söyleyebilirim.

hiçbir şey yapmayan git kontrol testi

Does nothing yaramadı eşit doesn't work , bu yüzden terminalinize 'git check-out testine' girip enter tuşuna bastığınızda, mesaj görünmüyor ve herhangi bir hata oluşmadığını tahmin ediyorum. Haklı mıyım

Cevabınız evet ise, sebebini size söyleyebilirim.

Sebebi, ağacınızda "test" adında bir dosya (veya klasör) olmasıdır.

git checkout xxx anladığında,

  • git önce xxx dal adı olarak bakar, ancak test adında bir dal yoktur.
  • Sonra Git, xxx yol olduğunu düşünüyor ve neyse ki (ya da ne yazık ki) test denilen bir dosya var. Bu nedenle, git checkout xxx , xxx dosyasındaki değişiklikleri iptal etmek anlamına gelir.
  • xxx adında bir dosya yoksa, Git bazı kurallara göre xxx oluşturmaya çalışır. Kurallardan biri, eğer remotes/origin/xxx varsa, xxx adında bir dal oluşturmaktır.
8
10 июля '17 в 10:45 2017-07-10 10:45 Cevap ihtiyar 10 Temmuz, 17'de 10: 45'te verilmiştir 2017-07-10 10:45

Burada error: pathspec 'desired-branch' did not match any file(s) known to git. Yukarıdaki tüm teklifler için. Git 1.8.3.1 versiyonundayım.

Bu yüzden benim için çalıştı :

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

Bunun açıklaması, uzak bir dalı alırken FETCH_HEAD'de seçildiğini fark etmemdir:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. Cevap alisa 11 Eki 2018-10-11 00:52 '18, 0:52 2018-10-11 00:52

Uzak şubenin ismiyle git checkout . Git otomatik olarak uzaktan kumandayı takip eden yerel bir şube oluşturacak :

 git fetch git checkout test 

Ancak, bu dal adı birden fazla konsolda bulunursa, Git ne kullanılacağını bilmediğinden çalışmayacaktır. Bu durumda, ikisini de kullanabilirsiniz:

 git checkout --track origin/test 

veya

 git checkout -b test origin/test 

Git , 2.19'da, bu belirsizliği ortadan kaldırırken varsayılan uzaktan kumanda değerinin belirtildiği checkout.defaultRemote yapılandırmasını inceledi.

6
13 сент. Cevap 13 Eylül'de Eugene Yarmash tarafından verildi . 2018-09-13 15:21 '18, 15:21, 2018-09-13 15:21

Yeni oluşturulan şubeleri almak

 git fetch 

Başka bir şubeye geç

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 Cevap Hasib Kamal tarafından 15 '18 Mart'ta saat 11: 49'da verilmiştir. 2018-03-15 11: 49

Silinen tüm dalları aşağıdaki bash betiği ile izlemeye başlayabilirsiniz:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

İşte tek satırlı versiyon da:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. Cevap OzzyCzech 11 Ağustos tarafından verilmiştir . 2017-08-11 15:06 '17, 15:06 2017-08-11 15:06

Boş bir klasör oluşturmak için lütfen bu komutu izleyin. Girin ve aşağıdaki komutu kullanın:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. Cevap Mehedi Hasan 01 Ocak tarafından verildi 2016-01-01 13:31 '16, 13:31 2016-01-01 13:31

Kökeni alın ve şubeyi kontrol edin.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 cevap Pranav 21 Mayıs '18 'de 14:33 2018-05-21 14:33

Uzak dalın adı özel karakterlerle başlıyorsa, ödeme komutunda tek tırnak kullanmanız gerekir, aksi takdirde git hangi konuda konuştuğunuzu bilmeyecektir.

Örneğin, #9773 adlı uzak bir dalı çıkarmaya çalıştım, ancak aşağıdaki şekilde gösterildiği gibi komut düzgün çalışmadı:

2019

07 нояб. Cevap Ulysses Alves 07 Kasım'da verildi . 2018-11-07 14:17 '18, 02:17, 2018-11-07 14:17

etiketleriyle ilgili diğer sorular veya bir soru sorun