Git çekmede Git hatası (yerel başvuru güncellenemiyor)


120

Yalnızca şube yöneticim var ve her "git pull" denememde bu hatayı alıyorum:

error: Couldn't set refs/remotes/origin/master
From /var/lib/git/xxx/project
 ! a0f80ea..49177a3  master     -> origin/master  (unable to update local ref)

ve "git pull origin master" yaptığımda şunu alıyorum:

error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

Arıyordum ama nedenini bulamıyorum


2
Yerel depo nerede? Çekme işlemini yürütmek için kullandığınızdan farklı bir kullanıcı olarak mı oluşturdunuz? Bir dosya izin sorunu gibi görünüyor.
tpg2114

Evet, proje dosyalarının sahibinin başka bir kullanıcı olduğunu söylediğinizden hemen sonrasınız, şimdi sorum çok aptal görünüyor, ama bana cevabı verdiniz, lütfen en iyi olarak seçmek için bir cevap yapın;)
user115561

lütfen @ tpg2114 bunu seçmek için bir cevap olarak ekleyin
user115561

Yanıtlar:


271

Ekibim ve ben , SourceTree'de bir çekim yaparken yerel referansı güncelleyemeyen bu hatayla karşılaştık.

Kullandığımız :

git gc --prune=now

Bu, sorunu çözmesi gereken yinelenen referans nesnelerini kaldırır.

Git referansları ve budama hakkında daha fazla bilgi edinebileceğiniz birkaç bağlantı :

haftanın en iyi ipucu

git-prune belgeleri

git referansları


1
Benim için de çalıştı, aynı mesaj, Windows 7'de Sourcetree
James Westgate

2
bu sorunu yeni yaşamaya başladım. Çok teşekkürler! mükemmel çalıştı!
ddrossi93

3
: Bu iki komutları gerekebilir git gc --prune=now git remote prune origingelen stackoverflow.com/questions/2998832/...
bryan

1
Denedim git remote prune originve benim için işe yaramadı. Ama ondan sonra bunu denedi git gc --prune=nowve işe yaradı! Emin değilim, bu sırada her ikisine de mi yoksa sadece bu sefer mi gerekliydi.
Anurag

1
Bununla ilgili başka bir şifreli sorun, gitkısa bir çözüm içeren yararlı bir StackOverflow gönderisine yol açar.
ijoseph

131

Aşağıdaki gibi çözdüm:

git remote prune origin


6
Eureka! Gerçekten işe yaradı. Uzaktan yeniden adlandırılmış şubelerle veya başka bir şeyle ilgisi var. Bunu açıklamaya çalışmayacağım.
TheSoftwareJedi

8
Bu benim için yaptı, git gc --prune=nowhiçbir şey yapmadı
Josh G

3
aynı. bu benim için çalışıyor. git gc --prune = artık benim için çalışmadı.
Tony

18

gitbach line commande ile git update-refyerel şubenizin referansını güncellemek için kullanın :

$ git update-ref -d refs/remotes/origin/[locked branch name]

sonra kullanarak çekin $ git pull

[locked branch name] kesinleştirme kimlikleri uyuşmazlığı nedeniyle hatanın meydana geldiği dalın adıdır.



12

Bir Bitbuck Repo'dan lokal kopyama çekmeye çalışırken aynı Hata mesajını keşfettim. Ayrıca yalnızca bir Branche Master vardır ve komut git pull origin masterbu Hata Mesajına yol açar

From https://bitbucket.org/xxx
 * branch            master     -> FETCH_HEAD
error: Couldn't set ORIG_HEAD
fatal: Cannot update the ref 'ORIG_HEAD'.

Çözüm aşağıdaki gibidir

  1. git reflog son işlemenin numarasını bul
  2. git reset --hard <numnber> son kaydetmeye sıfırla
  3. git pull origin master hatasız tekrar çek

11

rm .git/refs/remotes/origin/master

Benim için çalışıyor!


8

Çalıştıran kullanıcının git pulldepoyu oluşturan kullanıcıyla aynı olduğundan emin olun . Dosya izinleri yanlış.


Benim için chown ile doğru kullanıcıya çekmeye çalıştığım depodaki dosyaların sahibini değiştirmek zorunda kaldım. Sanırım bunu okuduğumda benim için açık olmamasına rağmen temelde söylediğiniz şey buydu.
Dee

Buna katılıyorum, sahip ve grubun ".git" deposunu çekmeye istekli kullanıcıya ayarlandığını kontrol edin (bir dalı "kök" olarak çekerseniz olur) benim durumumda bir "sudo chown -R" işi yaptı.
jo_


2

Bu, büyük / küçük harfe duyarlı olmayan bir dosya sistemi kullandığım OSX'te başıma geldi. Her nasılsa başka bir geliştirici aynı adla ancak farklı vaka ile bir şube itti: My-Branchvs my-branch.

Zaten My-Branchkontrol etmiştim ve muhtemelen dosya sistemi My-Branch== diye düşündüğü için bir çekme yaptığımda "yerel ref güncellenemiyor" hatasını aldım my-branch.

Github kullandığımız için Github'un GUI'si aracılığıyla şubelerden birini silerek sorunu çözebildim.


Benim durumumda, çakışan dalların ikisi de başka bir kullanıcıya aitti, bu yüzden birini silemedim. Bunun yerine, .git \ refs \ remotes altındaki şube ref dosyasını sildim ve bu onu düzeltti (geçici olarak - diğer kullanıcı dallarından birini silene kadar her çektiğimde sorun geri gelecektir).
Jana Mandic

Sorunum ayrıca yerel şube ve uzaktan farklı büyük harf kullanımına sahip olmasından kaynaklanıyordu. Yerel şube silinmesi yukarıdaki erik komutunu kullanarak ve sonra kökenden kontrol Çözmedim
descript

1

(Yerel referans güncellenemiyor) ile ilgili bu hata, yakın zamanda şifreleri değiştirdiyseniz ve Windows ve Linux oturum açma bilgilerinizi bütünleştiren bazı süslü şeyler varsa da meydana gelebilir.


1

Bir PC kullanıcısından konuşma - Yeniden başlatın.

Dürüst olmak gerekirse, benim için çalıştı. Bu şekilde yolsuzluk olduğunu düşündüğüm iki garip sorunu çözdüm.


1

Bu muhtemelen çok niş bir durumdur, ancak: MacBook Pro'mda bir Parallels VM'de Windows'u çalıştırıyorum, yerel depolarım VM'nin macOS ile paylaşılan diskinde depolanıyor.

Windows VM'de bulunan depodan bir Mac uygulamasında açık bir dosyam varsa, bazen "yerel ref güncellenemiyor" hatası alıyorum. Bu olduğunda çözüm, dosyayı kapatmak veya Mac uygulamasından çıkmaktır.


1

Aynı hatayı aldım, Eclipse içinden güncelleme yapıyordum ve birçok hata aldım. Bu yüzden bir DOS komut penceresinden güncellemeyi denedim ve aynı sorunu yaşadım.

Sonra "git gc --prune = now" çözümünü denedim. Bu, dosyaların refs dizininde kilitli olduğu mesajlarını verdi.

Eclipse, "refs" dizinindeki bir şeye kilitlenmiş olmalı.
Bulduğum çözüm, Eclipse'i kapatmaktı. Daha sonra depoyu DOS'tan bir "git PULL" komutuyla güncelledim ve her şey yolunda gitti.


1

Burada ne oldu? Uzak dallarınıza yerel referanslar değiştirildi ve bu nedenle çalıştırdığınızda git pullgit, karşılık gelen uzak dalları bulamaz ve bu nedenle başarısız olur.

git remote prune origin

aslında bu yerel referansları temizler ve ardından git pull tekrar .

Öneri - Lütfen --dry-rungüvenlik seçeneği ile çalıştırın


0

Debian sunucumda da disk dolu olduğu için aynı sorunu yaşadım. Cihazda yer kalmadığı için geçici dosya oluşturulamadı. Bazı dosyaları temizledikten sonra her şey yolunda gitti.


0

Bu benim için çalışıyor

rm .git/logs/refs/remotes/origin/master 

Bunun yardımcı olduğundan veya işe yaradığından şüpheliyim. Beni başka türlü ikna etmek için lütfen bunun nasıl çalışması gerektiğine ve soruna neden yardımcı olacağına dair bir açıklama ekleyin. Görünüşte benzer mevcut diğer cevaplarla olan farklılıkları vurgulamak bir bonus olacaktır. Özellikle Babak'ın oy verdiği.
Yunnosch

0

.Git / logs / refs / remotes / origin / [Kilitli Dal Adı] dosyasını kaldırın


1
Bunun yardımcı olduğundan veya işe yaradığından şüpheliyim. Beni başka türlü ikna etmek için lütfen bunun nasıl çalışması gerektiğine ve soruna neden yardımcı olacağına dair bir açıklama ekleyin. Görünüşte benzer mevcut diğer cevaplarla olan farklılıkları vurgulamak bir bonus olacaktır. Özellikle Babak'ın oy verdiği.
Yunnosch

0

Benim için işe yarayan şuydu:

git config --global fetch.prune true

Şimdi otomatik olarak erik yapmaya devam ediyor.

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.