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.