Git ölümcül: Referans geçersiz biçime sahip: 'refs / Heads / master


101

DropboxBir gitdepoyu senkronize etmek için kullanıyorum , ancak şimdi denediğimde ve pushbir hata alıyorum:

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'

Yani, Dropbox'ın bir çakışma tespit ettiği ve bir kopya oluşturduğu anlaşılıyor. Tamam, sorun değil, bu yüzden çakışan dosyayı sildim. Yine de, yukarıdaki git hatasını alıyorum.

$ git checkout master
    M   index.html
    Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
    [master ff6f817] Cleanup repo
    1 file changed, 5 insertions(+), 5 deletions(-)
$ git push
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
    The remote end hung up unexpectedly`

Bunu nasıl düzeltebilirim? Teşekkürler.

Yanıtlar:


178

Bundan emin değilseniz deponuzun bir yedeğini alın, çünkü bu komutlar geri alınamaz.

önce repo dizininize gidin.

cd myrepo

ardından çakışan dosyaları yinelemeli olarak arayın ve silin

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

son olarak, git'in paketlenmiş refs dosyasındaki "çakışan" referansları kaldırın

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs

1
Aynı sorunu yaşadım ve bu benim için düzeltildi. Teşekkür ederim!
— erik

Bu benim için de düzeltti. Teşekkür ederim!
— cecconeurale

1
macos kullanıcıları içinfind . -type f -name "* conflicted copy*" -delete
— Soyoes

42

Çakışan dosya birden çok yerde olabilir, şöyle bir bakardım:

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

Ya da her yere bakabilirsiniz .git alt dizinde :find . -name '*conflicted*'

Veya aksi takdirde, aktif dalları ile listeleyin ve şüpheli her şeyi git branch -asilin ( git branch -d).


İçinde her yerde çakışan dosyalar var .git. Hepsini gözden geçirdim ve sildim ve düzeltildi. Teşekkürler.
— Justin

2
@Justin Memnun oldum yardım edebilirim. Bu yanıt veya başka biri sorununuzu çözdüyse, lütfen kabul edildi olarak işaretleyin.
— Marco Leogrande

2
Mac OS X'te şunu kullanın: find . -name '*conflicted*'(Düzenle: format)
— xgMz

1
@xgMz Teşekkürler, çözümünüzün genel geçerliliği olduğundan cevabımı güncelleyeceğim.
— Marco Leogrande

1
Basit findbir şekilde, çakışan tek bir dosyayı buldum ve sorunu iki ile manuel olarak düzelttim mv. Bunu yavaşça yapmak ve adım adım akıl yürütmek en güvenli yoldur.
— pid

8

Bu, meslektaşımın değişikliklerini zorladığında ve Dropbox güncellenmeden önce bilgisayarı kapattığında da ekibimizin başına geliyor.

Ben çok basit çözdüm.

Çakışan kopyayı sildim. (XXXX'in çakışan kopyası yyyy-aa-gg)

Ve normal şekilde çekin.

İş arkadaşımın karışmadan önce değişiklikleri yaptığını unutmayın. Ve değişikliklerini tekrar zorluyor. Bu sefer kapatma yok. :)


1
benim için kesinlikle mükemmel çalıştı :) thx - benim için dropbox, "güncelleme" ile uyumlu olmayan garip bir dize dosya adı oluşturdu
— cV2

1
Bu benim için çalıştı! / Refs / Heads klasöründeki adında "çakışan kopya" bulunan bir dosya vardı ve bunu siliyor, sonra çek / it ve her şey yolunda. Teşekkürler!
— DiscDev

7

Tüm çakışan dosyaları .git klasörümden silebilirdim, ancak artık var olmayan dosyalarla ilgili hatalar almaya devam ettim.

Benim için düzeltme, .git/refs/packed_refs"çakışan" metni içeren satırları açıp silmekti.


1

Benim için hata veriyordu: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

/.Git/packed_refs adresine gidebilirsiniz dosyasına ve için satırı silebilirsiniz.refs/tags/r0.2:3

Sonra çalışmaya başladı. Ama neden ilk etapta olduğunu bilmiyorum.


0

git checkout masterSağlıklı, iyi adlandırılmış şubeye girmek için bir ilk deneyin .


Orijinal gönderideki çıktı güncellendi.
— Justin

Hm, tam bir deneyip git push origin masterçıktısını da yapıştırabilir git branch -amisin lütfen?
— dürtmek

Burada da aynı hata ... denenirken git branch -abu hatayla sonuçlanır!
— trusktr

Sorun uzaktaki depodadır, bu nedenle çekip çıkarmak sorunu çözmez. Yukarıdaki diğer cevaplar, doğrudan uzaktan kumandadaki dosyaları düzeltmek ve mükemmel şekilde çalışmakla ilgilidir. TAVSİYENİZ ÇOK İYİ ama sorunun cevabı değil.
— pid

0

Ben de aynı hatayı alıyordum

ölümcül: Referans geçersiz biçime sahip: 'refs / Heads / somebranch (1)'

aşağıdaki komut için

git branch

Ardından, komutu kullanarak hatalı adı aradım (şube adı ve ardından (1))

find . -name 'somebranch (1)'

Ve şu sonucu gösterdi

./.git/refs/heads/somebranch (1)

Hangi IMO şubesinin çoğaltılmış versiyonu . Ben de bunu silerek aşağıdaki find komutunu çalıştırarak kaldırdım.

find . -name 'somebranch (1)' -print -exec rm -rf {} \;

Ardından dal komutu başarıyla çalıştırılır

git branch

0

Şunun gibi benzer bir hatayla karşılaştım

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'

.git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)Uzak Dropbox deposundaki dosyanın basitçe silinmesi sorunu çözdü.

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.