Jawaban:
Saya tidak mengerti konsekuensi dari ini, tetapi seperti yang disarankan di utas ini , ketika saya menemukan ini, saya baru saja melakukannya
$ mv .git/refs/remotes/origin/HEAD /tmp
(menyimpannya untuk berjaga-jaga) dan kemudian
$ git gc
bekerja tanpa mengeluh; Saya tidak mengalami masalah apa pun.
git pruneberhasil untuk saya, cara untuk menghapus data yang telah terkumpul di Git tetapi tidak direferensikan oleh sesuatu yang berguna.
$ mv .git/refs/remotes/origin/HEAD /tmp $ git gc git prune
git gcbekerja untuk saya
Masalah yang saya hadapi (yang merupakan masalah yang sama dengan yang disebutkan @Stavarengo dalam komentar di atas) adalah bahwa cabang jarak jauh default ( developdalam kasus saya) telah dihapus, tetapi masih direferensikan di .git/refs/remotes/origin/HEAD.
Pembukaan .git/refs/remotes/origin/HEADdi editor saya menunjukkan ini:
ref: refs/remotes/origin/develop
Saya dengan hati-hati mengeditnya untuk menunjuk ke cabang default baru saya dan semuanya baik-baik saja:
ref: refs/remotes/origin/master
Petunjuk yang memberi tahu saya adalah bahwa berlari git prunemenunjukkan kesalahan ini:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Setelah melihat jawaban Trenton, saya melihat jawaban saya .git/refs/remotes/origin/HEADdan melihat bahwa itu juga menunjuk ke cabang lama yang sekarang sudah dihapus.
Tetapi alih-alih mengedit file sendiri, saya mencoba solusi Ryan:
git remote set-head origin --auto
Ini secara otomatis mengatur file ke cabang baru, dan git gcberfungsi dengan baik setelah itu.
git remote set-head $REMOTE --autodalam kasus saya, $ REMOTE adalah alias jarak jauh, bukan "asal" default, karena saya memiliki beberapa pengaturan jarak jauh.
Saya pikir solusinya adalah sebagai berikut karena ini sepertinya berhasil, tetapi ternyata tidak benar-benar menyelesaikan masalah.
git remote set-head origin --auto
git prune(seperti yang direkomendasikan dalam keluaran perintah pertama), jadi saya tidak dapat mengetahui dengan tepat apa yang membantu saya - pertama, kedua, atau keduanya.
git remote set-head origin --automemperbaiki file refs / remote / origin / HEAD saya tanpa harus saya gunakangit prune
error: Multiple remote HEAD branches. Please choose one explicitlydan harus menggunakan git remote set-head origin mybranch(sementara cabang 'cabang saya' sedang melakukan pembayaran) untuk menghilangkan kesalahan.
Sepertinya simbolik-ref Anda mungkin rusak ... Coba ganti dengan cabang default Anda seperti ini: Misalnya, cabang default saya adalah master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Itu harus memperbaikinya.
Penyebabnya bagi saya adalah bekerja di folder terkompresi di Windows. Ketika folder tidak terkompresi, itu merusak file paket, masalah aneh lainnya, seperti tidak dapat memangkas cabang yang tidak ada.
Satu-satunya perbaikan adalah menghapus direktori kerja dan mengkloning remote repo lagi. Untungnya, saya masih bisa melakukan push dan pull update untuk memastikan tidak ada yang hilang. Semuanya baik-baik saja sekarang.
masterlain yang disebutdevelop. Beberapa hari sebelum saya mengubahnya kembali daridevelopmenjadimasterdan saya menghapus cabang default lamadevelop, tetapi di direktori kerja saya, file.git/refs/remotes/origin/HEADitu masih mengarah kerefs/remotes/origin/developyang sudah tidak ada lagi. Dalam situasi ini, menghapus file berhasil.