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?
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
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
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
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.
İ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ü?
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.
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.
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.
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.
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 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 master
dalı 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 enhancement
name__, ancak uzak şube adınız future_branch
.
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
İ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.
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.
Aşağıdaki komutu kullanıyorum:
git checkout --track Origin/other_remote_branch
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
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.
bu cevapların hiçbiri benim için çalıştı. bu çalıştı:
git checkout -b feature/branch remotes/Origin/feature/branch
git fetch && git checkout your-branch-name
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.
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
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
Diğer çocuklar ve kızlar çözümleri veriyor, ama belki nedenini söyleyebilirim.
hiçbir şey yapmayan git ödeme testi
Does nothing
doesn'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,
xxx
ifadesini öncelikle bir şube adı olarak görür, ancak test adında bir dal yoktur.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 xxx
xxx
dosyasındaki herhangi bir değişikliği atmak anlamına gelir.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.Yeni oluşturulan şubelere ulaşmak için
git fetch
Başka bir şubeye geçmek için
git checkout BranchName
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 ;
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ı
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
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ı:
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'
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'