Git fatal: Referensi memiliki format yang tidak valid: 'refs / heads / master


101

Saya menggunakan Dropboxuntuk menyinkronkan gitrepositori, tetapi sekarang ketika saya mencoba dan pushsaya mendapatkan kesalahan:

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

Jadi, sepertinya Dropbox mendeteksi konflik dan membuat salinannya. Oke, tidak masalah, jadi saya menghapus file yang bentrok. Tetap saja, mendapatkan kesalahan git di atas.

$ 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`

Bagaimana cara memperbaikinya? Terima kasih.

Jawaban:


178

buat cadangan repo Anda jika Anda tidak yakin tentang yang ini, karena perintah ini tidak dapat diubah.

pertama, buka direktori repo Anda.

cd myrepo

kemudian secara rekursif mencari file yang konflik dan menghapusnya

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

terakhir, hapus semua referensi yang "berkonflik" dari file paket-refs git

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

1
Saya memiliki masalah yang sama dan ini memperbaikinya untuk saya. Terima kasih!
erik

Ini memperbaikinya untuk saya juga. Terima kasih!
cecconeurale

1
untuk pengguna macosfind . -type f -name "* conflicted copy*" -delete
Soyoes

42

File yang konflik bisa berada di banyak tempat, saya akan memeriksa:

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

Atau Anda mungkin mencari di mana-mana di .gitsubdirektori:find . -name '*conflicted*'

Atau, jika tidak, daftarkan cabang aktif dengan git branch -adan hapus ( git branch -d) sesuatu yang mencurigakan.


Ada file yang konflik di mana-mana di dalam .git. Saya memeriksa dan menghapus semuanya, dan itu diperbaiki. Terima kasih.
Justin

2
@Jin Senang bisa membantu. Jika jawaban ini atau jawaban lainnya menyelesaikan masalah Anda, tandai sebagai diterima.
Marco Leogrande

2
Di Mac OS X, gunakan: find . -name '*conflicted*'(Edit: format)
xgMz

1
@xgMz Terima kasih, saya akan memperbarui jawaban saya, karena solusi Anda memiliki validitas umum.
Marco Leogrande

1
Dengan sederhana findsaya mendapatkan satu file yang konflik dan secara manual memperbaiki masalah dengan dua file mv. Melakukan ini secara perlahan dan menalar langkah demi langkah adalah cara teraman.
pid

8

Ini juga terjadi pada tim kami ketika kolega saya mendorong perubahannya dan mematikan PC sebelum Dropbox diperbarui.

Saya menyelesaikannya dengan sangat sederhana.

Baru saja menghapus salinan yang bentrok. (Salinan yang konflik XXXX tttt-bb-hh)

Dan tarik secara normal.

Perhatikan bahwa kolega saya mengalami perubahan sebelum mengacaukannya. Dan dia mendorong perubahannya lagi. Kali ini tidak ada shutdown. :)


1
bekerja sangat sempurna untuk saya :) thx - bagi saya dropbox membuat beberapa nama file string aneh yang tidak kompatibel dengan "update"
cV2

1
Ini berhasil untuk saya! Ada file dengan "salinan konflik" pada namanya di folder / refs / heads dan menghapusnya, lalu tarik / dorong dan semuanya baik-baik saja. Terima kasih!
DiscDev

7

Saya dapat menghapus semua file yang konflik dari folder .git saya, tetapi saya terus mendapatkan kesalahan tentang file yang sudah tidak ada lagi.

Perbaikan bagi saya adalah membuka .git/refs/packed_refsdan menghapus baris yang berisi teks "bentrok".


1

Bagi saya itu memberikan kesalahan: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

Anda dapat pergi ke file /.git/packed_refs dan menghapus baris untukrefs/tags/r0.2:3

Kemudian itu mulai bekerja. Tapi kenapa itu terjadi? Aku tidak tahu.


0

Cobalah yang git checkout masterpertama untuk mendapatkan cabang yang sehat dan terkenal.


Output yang diperbarui di postingan asli.
Justin

Hm, bisakah Anda mencoba penuh git push origin master, dan juga menempelkan outputnya git branch -a?
aduk

Kesalahan yang sama di sini ... mencoba git branch -amenghasilkan kesalahan ini!
trusktr

Masalahnya ada pada repositori jarak jauh, jadi menarik atau memeriksa tidak menyelesaikannya. Jawaban lain di atas mengacu pada memperbaiki file secara langsung di remote dan bekerja dengan sempurna. SARAN ANDA SANGAT BAIK tetapi itu bukan jawaban untuk masalah.
pid

0

Saya mendapatkan kesalahan yang sama

fatal: Referensi memiliki format yang tidak valid: 'refs / heads / somebranch (1)'

untuk perintah berikut

git branch

Kemudian, saya mencari nama yang salah (nama cabang diikuti dengan (1)) menggunakan perintah

find . -name 'somebranch (1)'

Dan itu menunjukkan hasil sebagai berikut

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

Yang merupakan versi duplikat dari beberapa IMO cabang . Jadi, saya menghapus ini dengan menjalankan perintah find yang diikuti dengan delete

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

Kemudian perintah cabang berjalan dengan sukses

git branch

0

Saya menemukan kesalahan serupa seperti

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

Hanya dengan menghapus file .git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)di repositori Dropbox jarak jauh memang menyelesaikan masalah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.