git pull error: error: uzaktan başvuru bekleniyor ancak bekleniyor


228

Tam mesaj:

error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
 ! a21359c..6273ffc  user -> origin/user  (unable to update local ref)

3
Görünüşe göre birisi tarafından depo tarihini yeniden yazdı git push --force. Koşmaya çalış git pull --force.
xaizek

1
Git push --force ile aynı hatayı verir
Sanjeev Kumar Dangi

5
Bu sorunun cevabı bu hatayı çözdü - stackoverflow.com/questions/3046436/…
Sanjeev Kumar Dangi

Yanıtlar:


226

Git'i büyük / küçük harfe duyarlı olmayan bir dosya sistemi altında çalıştırıyorsanız (Windows veya OS X), aynı ada ancak farklı büyük harf kullanımına sahip iki dal varsa, örneğin user_model_changesve User_model_changesuzak dalların her ikisi de aynı izleme referansıyla eşleşeceğinden .

Yanlış uzak dalı silin (yalnızca duruma göre farklılık gösteren dallarınız olmamalıdır) ve sonra git remote prune originher şey çalışmalıdır


cevap için teşekkürler. Bu hatayla ilgili sorun bu değildi. Bu sorunun çözümünü zaten buldum ve sorunun altında yorumda bulundum.
Sanjeev Kumar Dangi

2
Mac OS X için de yardımcı olur (varsayılan dosya sistemi büyük / küçük harfe duyarlı değildir).
Tammo Freese

12
evet, Windows'ta büyük / küçük harfe duyarlı olmayan sorun bu soruna neden oldu. Ref .git\refs\remotes\originklasörünü elle ve sonra git pulltekrar kaldırarak düzelttim .
Roy Ling

ve .git klasörünün nerede olacağını bilmeyenler için ... Proje / çalışma alanı klasörünüzde oluşturulacaktır: D
kumar

1
Bu bir git hatası. (En azından hata mesajı yanlış). Umarım birisi bu hatayı git projesine bildirebilir. Git projesine hata bildirmek benim için zor görünüyor. github.com/git/git
bronz adam

190

Kalıcı Düzeltme

git update-ref -d bu hatayla ilgili örneğimi çözdü, ör.

git update-ref -d refs/remotes/origin/user

Bunun uzaktan kumandayı etkilemediğini unutmayın.

Benim durumumda, daha sonra git fetchbu dalı yeniden getirdi ve git getirme / çekme işlemlerinin ardından artık "uzak ref açık ama beklenen" hatası vermedi.

Bu işe yaramazsa, geçici bir düzeltme:

Ayrıca, söz konusu dalı önemsemiyorsanız (örneğin, yalnızca kaynak / kullanıcı değil ana kopyayı güncellemek istiyorsanız), bir git pullçözümün getirip ardından önem verdiğiniz belirli dalı birleştirmek olduğunu unutmayın.

git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge origin/master

Bu, kabul edilen çözüm olmalıdır, çünkü sorunu uzaktan kumandaya dokunmadan çözer.
Cerno

52

Sadece altındaki klasörleri ve dosyaları silin \.git\refs\remotes\origin. Çalışır, u unpushed değişiklik yok.


Uzaktan ref ise bu olabilir değil iş 'paketlenmiş' ve bu nedenle değil de hakemler / uzaktan kumanda / ** @ hala o çalışmalıdır JDiMatteo çözümü
Alexander Bird

2
Benim için çalıştı. Bir ton teşekkürler!
Swapnil Patwa

Bir cazibe gibi çalıştı! Teşekkürler!
Anurag S Sharma

43

Sorunu çözmek için bunu çalıştırdım:

git gc --prune=now

2
Bu benim için sorunu düzeltti.
Aamir Rizwan

2
benim için de ..-- :)
Aravind R Pillai

3
Teşekkürler, bu çözüm benim için düzeltildi. Sağladığınız çözüm hakkında biraz daha bilgi verir misiniz?
Aamol

1
temelde sadece bir git çöp toplayıcı aracı, bu yüzden senkronize olmayan ancak önbellekleme için yerel bilgisayarda olan her şeyi siler
elad silver

42

Aşağıdaki iki komutu tek tek kullanın.

git gc --prune=now

git remote prune origin

Bu, sorununuzu çözecektir.


1
Bu benim için çalışıyor ama başka bir git çekme yaptığımda bu sorun tekrar ortaya çıkıyor
Jojin

@Jojin Seninle aynı. Ve nihayet Prakash Saravanan'ın sağladığı yolu seçtim
xi.lin

1
Bu, git dosyalarını düzenleme önerisinden daha yüksek puan almalıdır :)
Mike Wise

sadece bu çözüm benim için çalıştı. Teşekkürler!
insaineyesay

12

Şuradaki komut satırımdan şubemi kaldırmak zorunda kaldım :

.git\refs\remotes\{my remote}\{**my branch**}

ve daha sonra manuel olarak:

git pull [remote_name] [branch_name]

Değişiklikleri çekebildim.

Not: SourceTree kullanıyordum ve çekme işlemini yapamadım.


Sonunda uzaktan kumandalarımı yeniden adlandırdım: SourceTree geçmişimde "Bitbucket / staging" ve "bitbucket / staging" adlı iki uzaktan kumanda vardı, ancak komut satırında yalnızca "Bitbucket" çıktı: git remote -v. Bu yüzden Bitbucket'i bitbucket olarak değiştirdim ve çatışma sonunda kayboldu, umarım bu büyük olasılıkla SourceTree kullanıcılarına yardımcı olur.
jogam5

Benim .git\packed-refsiçin düzeltilmeden önce şubeyi de çıkarmak zorunda kaldım .
Michael

6

Donanımdan sıfırlama da sorunu çözecektir

git reset --hard origin/master

En iyi cevabı seçtiniz mi?
mruanova

5

Daha Net Adımlar

  1. terminalde

    cd /.git/refs/remotes/origin
    
  2. do ls, bazı göreceksiniz dalları ve HEAD

  3. Sorunun olduğunu düşündüğünüz şubeyi kaldırın

    rm branchname
    
  4. Eğer çalışmadıysa, tüm dalları / HEAD'i silin

    • çekebilirsin

Umarım şimdi çalışır.


bu aslında aynı git update-ref -d <branchname>mı?
jt000

2

Bunu dene, benim için çalıştı. Senin Terminale: git remote prune origin.


2

Ne yazık ki budama, sıfırlama veya itme gibi GIT komutları benim için çalışmadı. Prune bir kez çalıştı ve sonra sorun geri döndü.

Benim için çalışan kalıcı çözüm, bir git dosyasını el ile düzenlemektir. Sadece projenin .git klasörüne gidin ve paketlenmiş refs dosyasını Notepad ++ gibi bir metin düzenleyicide açın. Daha sonra başarısız olan dal ile satıra gidin ve kılavuzunu beklenen tanesine güncelleyin.

Şöyle bir mesajınız varsa:

"hata: ref 'refs / remotes / origin / feature / branch_xxx' kilitlenemiyor: 425ea23facf96f51f412441f41ad488fc098cf23 ama beklenen 383de86fed394ff1a1aeefc4a522d886adcecd79"

sonra dosyada 'refs / remotes / origin / feature / branch_xxx' ile satırı bulun. Kılavuz, beklenen (2.) bir - 383de86fed394ff1a1aeefc4a522d886adcecd79 olacaktır. Gerçek (1.) bir - 425ea23facf96f51f412441f41ad488fc098cf23 olarak değiştirmeniz gerekir.

Diğer başarısız dallar için tekrarlayın ve ilerlemeye devam edin. Bazen yeniden getirdikten sonra, daha önce `` sabitlediğim '' aynı dallar için tekrarlamak zorunda kaldım. Yeniden getirildiğinde GIT güncellemeleri kılavuzları ve size en son olanı verir.

Her neyse, sorun bir gösteri durdurucu değildir. Şube listesi güncellenir. Bu bir uyarıdır.


1

git for-each-ref --format = '% sil (refname)' refs / orijinal | git update-ref --stdin git reflog süresinin dolması --expire = şimdi - tüm git gc --prune = şimdi


0

Burada aynı durumda, ancak yorumlarla ilgili hiçbir şey benim durumumda yayınlanmadı, sadece bir şube (master) var ve sadece Unix dosya sistemi kullanıyorum, git fetch --progress --prune kökeni ve şube önde olduğunda bu hata rastgele oluşur veya 'orijin / master'. Kimse taahhütte bulunamaz, sadece 1 kullanıcı itme yapabilir.

NOT: acme deposunda bir alt modül var ve acme yeni alt modül değişiklikleri (yeni taahhütler) var, ilk önce git alt modül güncellemesi ile bir alt modül güncellemesi yapmam gerekiyor.

[2014-07-29 13:58:37] Payload POST received from Bitbucket
[2014-07-29 13:58:37] Exec: cd /var/www/html/acme
---------------------
[2014-07-29 13:58:37] Updating Git code for all branches
[2014-07-29 13:58:37] Exec: /usr/bin/git checkout --force master
[2014-07-29 13:58:37] Your branch is ahead of 'origin/master' by 1 commit.
[2014-07-29 13:58:37]   (use "git push" to publish your local commits)
[2014-07-29 13:58:37] Command returned some errors:
[2014-07-29 13:58:37] Already on 'master'
---------------------
[2014-07-29 13:58:37] Exec: /usr/bin/git fetch --progress --prune origin
[2014-07-29 13:58:39] Command returned some errors:
[2014-07-29 13:58:39] error: Ref refs/remotes/origin/master is at 8213a9906828322a3428f921381bd87f42ec7e2f but expected c8f9c00551dcd0b9386cd9123607843179981c91
[2014-07-29 13:58:39] From bitbucket.org:acme/acme
[2014-07-29 13:58:39]  ! c8f9c00..8213a99  master     -> origin/master  (unable to update local ref)
---------------------
[2014-07-29 13:58:39] Unable to fetch Git data

Bu sorunu çözmek için (benim durumumda) şubeniz başlangıçta ise ilk git tuşuna basın.


3
Buradaki cevabınız sadece yerel deponuzun yeni bir taahhütten sonra kökeninin önünde olması gerçeğiyle ilgilidir. Bu, yerel bir git kesinleştirme işleminin doğal durumudur ve asıl soru ile ilgili değildir.
davient

0

Bunun eski olduğunu biliyorum, ama kendi düzeltmem var. Kaynak ağacı kullandığım için, bu hata birisinin yeni bir dal oluşturması nedeniyle oluşur. Kaynak ağaç bu konuda karıştı. "Çekmek için uzak dal" kombo kutusunun yanındaki "Yenile" düğmesine bastıktan sonra, sourcetree'in dal listesini güncellediği anlaşılıyor ve şimdi başarıyla çekebiliyorum.


0

Aynı soruna sahiptim, çünkü uzak şubeye itmiş olmama rağmen daha eski bir işleme sıfırladım.

Yerel şubemi sildikten sonra başlangıç ​​şubesini kontrol edip, git checkout origin/my_branchçalıştırarak çözdüm.git checkout my_branch


-1

Sürekli arama yaptıktan sonra, bu benim için işe yarayan ve Upstream'in ayarlanmasını / kaldırılmasını gerektiren çözüm

git branch --unset-upstream
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.