git getirme tüm dalları alamıyor


204

Bir havuzu klonladım, bundan sonra başka biri üzerinde çalışmaya başlamak istediğim yeni bir şube yarattı. Kılavuzu okudum ve kolay ölü gibi görünüyor. Garip bir şekilde çalışmıyor ve bulduğum tüm gönderiler doğru şeyi yaptığımı gösteriyor. Bu yüzden kendimi lambasting'e tabi tutacağım, çünkü bununla ilgili açıkça yanlış bir şey olmalı :

Doğru eylem görünüyor olması

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

Bu noktada git fetch, dev-gml uzak dalını göremediğim için bir sorun var . Neden olmasın? Depoyu taze klonlarsam, orada, bu yüzden kesinlikle uzak dal var:

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

Denedim git update, git pull, git fetch --all, git pretty-pleasetüm olası permütasyonlarda ...


45
Ne git config --get remote.origin.fetchüretiyor? Değilse +refs/heads/*:refs/remotes/origin/*, muhtemelen olmalı.
torek

yup tam olarak bunu üretiyor
Edward Newell

3
Tam olarak aynı sorun, ama yukarıdaki yorum çözdü! Ben +refs/heads/master:refs/remotes/origin/masterile masteryerine*
Mirko

1
Benim için aynı sorun, ancak bu sayfadaki önerilerin hiçbiri bunu çözmüyor. Tuhaf.
Magnus

1
@ thoni56: Evet, bu muhtemelen sığ bir klondan kaynaklanıyor.
Trện Việt Hoàng

Yanıtlar:


389

remote.origin.fetchAyarı kontrol ederken sorun görülebilir
(ile başlayan satırlar $yazdığım komutlarla bash istemleridir. Diğer satırlar sonuç olarak ortaya çıkan çıktıdır)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

Gördüğünüz gibi, benim durumumda, uzaktan kumanda ana dalı sadece ve sadece getirecek şekilde ayarlanmıştı. Sonuçları kontrol etmek için ikinci komut da dahil olmak üzere aşağıdaki gibi sabitledim.

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

Joker karakter *elbette bu yolun altındaki her şey anlamına gelir.

Ne yazık ki , zaten yorum ve cevap deneme yanılma ile buldum sonra bu yorumu gördüm .


2
Orijinal yayında sorunu gerçekten çözdüğü için bu muhtemelen kabul edilen cevap olmalıdır.
LocalPCGuy

1
sadece bir yan not, --replace-allbenim için yapılandırmadaki tüm değerleri değiştirmek için parametre eklemek zorunda kaldımremote.origin.fetch
Garis M Suero

4
git clone <url> --branch <branch> --single-branch [<folder>]
Deponuzu

2
Steve'in cevabını kontrol edin
Newbee

5
Bu ile klonladığınızda olabilirgit clone ... --depth 1
Anatolii Bivol

113

Bugün bir sorun üzerinde bu sorunu yaşadım.

En +refs/heads/*:refs/remotes/origin/*iyi çözüme göre sorun değildi .

Belirti basitçe buydu git fetch originveya git fetchgetirilecek uzak dallar olmasına rağmen hiçbir şey yapmıyor gibiydi .

Birçok şeyi denedikten sonra, menşei uzaktan kumandayı çıkardım ve yeniden yarattım. Bunu düzeltmiş görünüyor. Neden bilmiyorum.

ile kaldır: git remote rm origin

ve şununla yeniden oluştur: git remote add origin <git uri>


14
Ben doğru git yapılandırması vardı remote.origin.fetchyani +refs/heads/*:refs/remotes/origin/*. Yukarıdaki çözüm bana yardımcı oldu.
Newbee

9
Bu çözüm benim için de doğru çözümdü. Git'te bir hata olabileceğini gösterdiğinden bu talihsiz bir durumdur.
Robert Oschler

2
Bu da benim sorunumu çözdü. Ben de git sürüm 2.19.1v olan bir makinede bu sorunu var gibi görünüyor ama git sürüm 2.17.1 ile başka bir makinede deneyimi yoktu
jerpint

6
git remote update originbenim için çalıştı. Sanırım yenilenmesi gereken bir şey var mı?
Felipe Gerard

3
git remote update originbenim için işe yaramadı ama uzaktan kumandayı kaldırmak ve eklemek yaptı.
Anatoliy Kmetyuk

59

Uzaktan güncelleme

Koşman gerek

git remote update

veya

git remote update <remote> 

Sonra git branch -ruzak dalları listelemek için çalıştırabilirsiniz .

Yeni bir şubeye göz atın

(Yeni) uzak dalı yerel şube olarak izlemek için:

git checkout -b <local branch> <remote>/<remote branch>

veya (bazen ekstra olmadan çalışmaz remotes/):

git checkout -b <local branch> remotes/<remote>/<remote branch>

Faydalı Git Cheatsheets


5
Ama benim sorunum, mevcut bir uzak dalı kontrol edemiyorum , çünkü git istemcim var olduğunu düşünmüyor. Soruma bak. Ben koşmak git fetchsonra takip git branch -atüm dalları göstermez unutmayın. Bir çalışma arkadaşının yaptığı dalı görmek için çalışma dizinimi silmek ve yeniden klonlamak zorunda kaldım dev-gml. Bu sefer işe yaradı, ama sık sık dallanacağız!
Edward Newell

Hey @EdwardNewell, cevap için teşekkürler, sadece size bildirmek için, bağlantınız cheat.errtheblog.com/s/git benim için öldü ...
Kjellski

Bu soruyu ilk sorduğumdan bu yana uzun zaman geçti ve biri pingledim çünkü biri yeniden yayınladı. Aslında benim için hiçbir şey işe yaramasa da bu yanıtı kabul ediyorum. Sonunda bunu doğru olarak işaretlememin sebebi, Edit:çok iyi yazdığı şeylerin işe yarayabileceğinden şüphelenmem . Hala problemle karşı karşıya kalsaydım deneyeceğim şey buydu. HTH
Edward Newell

Kayıt için, burada bana yardımcı olan biraz git remote update origin. Bu, kayıp dalı üzerinden görünür hale getirdi git branch -l -r. ( git config --get remote.origin.fetch+refs/heads/*:refs/remotes/origin/*
Baktım

9

terminalden yaz

git fetch --prune.

iyi çalışıyor.


1
Teşekkür ederim! Birçok şeyi denedim ve sadece bunu denediğimi düşündüm ... Şimdi gerçekte ne yaptığımı görmek için ...
MadTurki

Bu ne işe yarıyor?
Adam Orlov

Mevcut tüm dalları alır. Kafasına bak.
Samet ÖZTOPRAK

4

Daha spesifik hale getirmek için Bir izleme dalı oluşturun, yani artık uzak bir dalı izliyorsunuz.

git branch --track branch remote-branch
git branch --track exp remotes/origin/experimental

Bundan sonra yapabilirsiniz

git branch   # to see the remote tracking branch "exp" created .

Sonra o dalda çalışmak

git checkout branchname
git checkout exp

Şubede değişiklikler yaptıktan sonra. Değişikliklerinizi birleştirmek ve aşağıdaki gibi uzak şubeye göndermek için uzaktan izleme şubenizle git getirebilir ve git birleştirebilirsiniz.

git fetch origin
git merge origin/experimental  
git push origin/experimental

Umarım bu nasıl yardımcı olur ve size nasıl bir fikir verir.


1

Benzer bir sorunum vardı, ancak benim durumumda uzak şubeye çekebilirim / itebilirdim ama git status uzak olanları wrt yerel şube devlet göstermedi.

Ayrıca, benim durumumda git config --get remote.origin.fetch hiçbir şey iade etmedi

Sorun şu ki bir yazım hatası var .git/config ilgili uzak bloğun getirme satırında dosyada . Muhtemelen daha önce yanlışlıkla eklediğim bir şey (bazen doğrudan bu dosyaya bakarım, hatta düzenlerim)

Bu nedenle, .git/configdosyadaki uzak girişinizin doğru olup olmadığını kontrol edin , örneğin:

[remote "origin"]
    url = https://[server]/[user or organization]/[repo].git
    fetch = +refs/heads/*:refs/remotes/origin/*

0

Bu bir yüz avuç içi anından kaynaklanıyor olabilir: birkaç klon arasında geçiş yaparsanız, var olmayan bir dalı çekmeye çalışırken kendinizi yanlış kaynak ağacında bulmak kolaydır. Klonların benzer isimlere sahip olması veya depoların aynı proje için birden çok katılımcının her birinden farklı klonlar olması daha kolaydır. Yeni bir git klonu, asıl sorun odağı ya da çalışma bağlamını ya da her ikisini birden kaybettiğinde, bu "sorunu" çözdüğü açıktır.


0

GitExtensions Uzaktan Depolarıma girmek zorunda kaldım, çünkü burada hiçbir şey çalışmıyor gibiydi. Orada 2 şubenin yapılandırılmış uzak deposu olmadığını gördüm. ayarladıktan sonra aşağıdaki gibi görünürresim açıklamasını buraya girin

Bildirim dalı noExternal3, uzak bir depoya sahip olmadığını gösteriyor. Hangi bash komutları kombinasyonunun bunu bulup ayarlayacağından emin değilim.


0

Bugün aynı sorunu repo benim sıfırdan kurmak vardı. Her şeyi denedim, menşei kaldırmak ve tekrar eklemek dışında hiçbir şey işe yaramadı.

git remote rm origin
git remote add origin git@github.com:web3coach/the-blockchain-bar-newsletter-edition.git

git fetch --all
// Ta daaa all branches fetched

-1

Aynı sorunu yaşadık ve kullanmak zorundasın

git fetch

git push origin branch_name

git branch -r

Umarım bu aynı problemle karşılaşan birine yardım eder

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.