it-swarm-tr.com

Uzak Git şubesini nasıl kontrol edebilirim?

Birisi, paylaşılan bir depoya git Push Origin test ile test adlı bir dal itti. Şube git branch -r ile görebilirim.

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

Denedim:

  • hiçbir şey yapmadan git checkout test

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

Uzak Git şubesini nasıl kontrol edebilirim?

6088
Juri Glass

Güncelleştirme

Jakub'un cevabı aslında bu konuyu iyileştirir. Git sürümleri ≥ 1.6.6, yalnızca bir uzaktan kumandayla, şunları yapabilirsiniz:

git fetch
git checkout test

Kullanıcı masukomi bir yorumda işaret ettiği gibi, eğer birden fazla uzaktan kumanda varsa git checkout test modern git'te çalışmayacaktır. Bu durumda kullanım

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

veya steno

git checkout -t <name of remote>/test

Eski cevap

Yerel olarak uzak bir dalda çalışmaya başlamadan önce, aşağıdaki cevaplarda açıklandığı şekilde almanız gerekir.

Şube almak için yapmanız gerekenler:

git fetch Origin

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

git branch -v -a

Uzaktaki şubeler elinizde olduğunda, şimdi ilgilendiğiniz şubeye bakmanız ve size yerel bir çalışma kopyası vermeniz gerekir:

git checkout -b test Origin/test
8411
hallski

Sidenote:Modern Git ile (> = 1.6.6 ), yalnızca

git checkout test

('test' değil 'Menşe/test' değil) büyülü DWIM -mali yapın ve sizin için yerel şube 'test'i yaratın; '.


git branch çıktısındaki * (no branch), adlandırılmamış dalda olduğunuz, "müstakil HEAD" durumunda olduğunuz anlamına gelir (HEAD, doğrudan işlenmeye işaret eder ve bazı yerel dallara sembolik referans değildir). Bu adlandırılmamış dalda bazı taahhütlerde bulunduysanız, geçerli dağıtımdan yerel şubeyi her zaman oluşturabilirsiniz:

git checkout -b test HEAD
1190
Jakub Narębski

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

$ git branch test Origin/test

git'nin önceki sürümlerinde, açık bir --track seçeneğine ihtiyacınız vardı, ancak şimdi uzak bir şubeden dallandığınızda varsayılan değer budur.

528
ndim

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

İlk ve seçilen cevap teknik olarak doğru iken, tüm nesneleri henüz almamış olabilirsiniz ve uzak havuzdan referans alıyorsunuz. 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 şubeleriyle uyumlu değil.
Taahhüt olarak çözülemeyen 'Origin/remote_branch' çıkışını yapmayı düşündünüz mü?

Çözüm

Bu mesajı alırsanız, önce git fetch Origin çalıştırmadan önce Origin uzak havuzun adı olan bir git checkout remote_branch yapmalısınız. İş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 çalışan yerel makinemizde izlemek için henüz ayarlanmamış uzak şubeleri aldı. Oradan, şimdi uzak şubeye bir refedimiz olduğundan, sadece git checkout remote_branch komutunu çalıştırabiliriz ve uzaktan izlemenin avantajlarını elde edeceğiz.

439
Corey Ballou

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 dalı alır ve (eğer mevcut değilse) local_branch_name adında yeni bir yerel dal oluşturur ve içindeki uzak olanı izler.

226
Sahil kalra

Bu, DWIM , Origin adlı bir uzaktan kumanda için ( belgeler ):

$ 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 Git uzaktan kumandanın var olduğunu söyler, ikincisi ise emirleri alır.

105
tacaswell

Kullanın:

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

İyi huylu davamda diğer cevaplar modern Git ile çalışmıyor. Uzaktaki şube yeniyse önce bunu çekmeniz gerekebilir, ancak bu durumu kontrol etmedim.

100
matanster

OK, cevap kolay ... Temel olarak şubeyi görüyorsunuz, ancak henüz yerel bir kopyanız yok! ...

Şube fetch gerekir.

Sadece şube getirip sonra da ödeme yapabilirsiniz, bunu yapmak için aşağıdaki bir satır komutunu kullanın:

git fetch && git checkout test

Farklılıkları paylaşmanız, fetch öğesinin nasıl çalıştığına ve pull öğesinin nasıl farklı olduğuna bakmanız için aşağıdaki resmi de oluşturdum:

 git fetch

78
Alireza

Git deposunu klonlamak için şunları yapın:

git clone <either ssh url /http url>

Yukarıdaki komut tüm dalları kontrol eder, ancak yalnızca masterdalı başlatılır. Diğer şubeleri kontrol etmek istiyorsanız, şunları yapın:

git checkout -t Origin/future_branch (for example)

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

Ödeme sırasında yerel şube adınızı geçersiz kılmak istiyorsanız:

git checkout -t -b enhancement Origin/future_branch

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

Belgeler

52
Madhan Ayyasamy

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
34
uma

İlk önce yapmanız gerekenler:

git fetch # Şube adını bilmiyorsanız

git fetch Origin branch_name

İkinci olarak, uzak şubenizi bölgenizdeki bölgelere göre kontrol edebilirsiniz:

git checkout -b branch_name Origin/branch_name

-b, seçtiğiniz uzak şubeden belirtilen adda yeni dal oluşturur.

28
Silent Spectator

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 development adresinden bir latest fixes_for_dev oluşturur.

27
sreekumar

Aşağıdaki komutu kullanıyorum:

git checkout --track Origin/other_remote_branch
25
priyankvex

Eğer dal Origin remote dışında bir şeydeyse, aşağıdakileri yapmaktan hoşlanırım:

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

Böylece next remote üzerindeki upstream dalı, second/next adlı yerel bir şube olarak teslim edilir. Bu, eğer zaten adında bir yerel şubeniz varsa, çatışma olmayacak demektir.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -r, nesne adının geçersiz olduğunu çünkü bu dalın Git'in yerel şube listesinde olmadığını söylüyor. Yerel şube listenizi Menşe’den şununla güncelleyin:

git remote update

Ardından uzaktaki şubenizi tekrar kontrol etmeyi deneyin.

Bu benim için çalıştı.

git fetch 'ın tüm uzaktaki dalları içine çektiğini düşünüyorum.

16
webdevguy

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

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

15
brianyang

git fetch && git checkout your-branch-name

15

Uzak dalın adıyla git checkout komutunu çalıştırmanız yeterlidir. Git/ otomatik olarak uzaktan kumandayı izleyen bir yerel şube oluşturacaktır:

git fetch
git checkout test

Ancak, bu dal adı birden fazla uzaktan kumandada bulunursa, Git kullanacağını bilmediğinden bu işe yaramaz. Bu durumda aşağıdakilerden birini kullanabilirsiniz:

git checkout --track Origin/test

veya

git checkout -b test Origin/test

Git 2.19 , Git, böyle bir belirsizliği çözerken uzaktaki varsayılanı belirleyen checkout.defaultRemote configuration öğesini öğrendi.

13
Eugene Yarmash

Yukarıdaki önerilerin tümü için error: pathspec 'desired-branch' did not match any file(s) known to git. işlevini gören bir durumda kaldım. Git 1.8.3.1 versiyonundayım.

Yani bu benim için çalıştı :

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

Arkasındaki açıklama, uzak şubeyi çekerken FETCH_HEAD'e alındığını fark ettim:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

git remote show <Origin name> komutu tüm dalları (izlenmeyen dallar dahil) listeler. Sonra getirmeniz gereken uzak dal adını bulabilirsiniz.

Örnek:

$ git remote show Origin

Uzak dalları almak 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
10
Thushan

Diğer çocuklar ve kızlar çözümleri veriyor, ama belki nedenini söyleyebilirim.

hiçbir şey yapmayan git ödeme testi

Does nothingdoesn't work ile aynı değildir, bu yüzden terminalinize 'git checkout test' yazıp enter tuşuna bastığınızda, hiçbir mesaj görünmez ve hata olmaz. Haklı mıyım

Cevap 'evet' ise, sebebini size söyleyebilirim.

Bunun nedeni, çalışma ağacınızda 'test' adında bir dosya (veya klasör) olmasıdır.

git checkout xxx ayrıştırıldığında,

  1. Git xxx ifadesini öncelikle bir şube adı olarak görür, ancak test adında bir dal yoktur.
  2. Sonra Git xxx'nin bir yol olduğunu düşünüyor ve neyse ki (veya ne yazık ki) test adında bir dosya var. Yani git checkout xxxxxx dosyasındaki herhangi bir değişikliği atmak anlamına gelir.
  3. xxx adında bir dosya yoksa, Git bazı değişkenlere göre xxx öğesini oluşturmaya çalışır. Kurallardan biri, eğer remotes/Origin/xxx varsa, xxx adlı bir dal oluşturmaktır.
8
oldman

Yeni oluşturulan şubelere ulaşmak için

git fetch

Başka bir şubeye geçmek için

git checkout BranchName
7
Hasib Kamal

Tüm uzak 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 ayrıca tek satırlık bir sürüm:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

Uzaktan kumandadan al ve şubeyi kontrol et.

git fetch <remote_name> && git checkout <branch_name> 

Örneğin.:

git getir Menşei ve & git ödeme özelliği/XYZ-1234-Ekleme uyarıları

6
Pranav

Tüm uzaktan kumandayı çekmek için fetch kullanın

   git fetch --all

Uzak dalları listelemek için:

   git branch -r

Tüm şubelerinizi listelemek için

   git branch -l
   >>outpots like-
     * develop
       test
       master

Bir şubeyi satın almak/değiştirmek için

   git checkout master
2
Nasir Khan

Uzak dal adı özel karakterlerle başlıyorsa, ödeme komutunda etrafındaki tek tırnak işaretlerini kullanmanız gerekir, yoksa git hangi daldan bahsettiğinizi bilmez.

Örneğin, #9773 adında bir uzak dalı kontrol etmeye çalıştım, ancak aşağıdaki resimde gösterildiği gibi komut düzgün çalışmadı:

 enter image description here

Bazı nedenlerden dolayı keskin sembolün (#) bununla bir ilgisi olup olmadığını merak ettim ve sonra dal ismini sadece '#9773' yerine #9773 rathen gibi tek tırnak işaretleri içine almayı denedim ve gayet iyi çalıştı.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

Boş bir klasör oluşturmak için lütfen komutu takip edin. Bunu girin ve bu 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'
1
Mehedi Hasan