Bagaimana cara menghapus referensi git `refs / original / refs / heads / master`?

35

Apa ini di kotak kuning?

tangkapan layar

Saya sudah mencoba git branch -D, git tag -dtetapi tidak ada yang berhasil. Jadi bagaimana cara menghapusnya?

Xiè Jìléi
sumber
1
Harap pertimbangkan untuk mengubah jawaban yang diterima menjadi jawaban Alexey Ten yang sangat dipilih, dan benar ( git update-ref -d).
Jonathon Reinhart

Jawaban:

11

Itu terlihat seperti sebuah tag, jadi perintah berikut ini harus berfungsi:

git tag -d refs/original/refs/heads/master

Tapi, karena Anda sudah mengatakan tidak, Anda bisa menghapus file dari .gitdirektori. Dari akar repositori, perintah seperti ini akan mendapatkannya:

rm .git/refs/tags/refs/original/refs/heads/master

Jalur mungkin sedikit berbeda jika git-tagperintah gagal, jadi Anda mungkin ingin cd .git/refsdan menemukan kepala yang menyinggung dengan coba-coba. Menghapus file akan menghapus referensi dari repositori lokal Anda.

Stephen Jennings
sumber
2
Ini bukan tag, namun, saya telah menemukannya sebagai .git/refs/original/refs/heads/master.
Xiè Jìléi
1
Gunakan git update-refdaripada secara manual memutasi internal Git. Lihat jawaban Alexey.
wchargin
100

Perintah ini seharusnya bekerja

git update-ref -d refs/original/refs/heads/master
Alexey Ten
sumber
Ini bekerja untuk saya dengan masalah yang sama. Perhatikan bahwa referensi disimpan dalam file bernama .git / packed-refs. Jika Anda membukanya, Anda dapat melihat baris dengan SHA dan string "ref / original / refs / heads / master". Anda mungkin dapat menghapus baris itu, tetapi saya akan menggunakan perintah ini untuk aman.
Matt N
14
+1: Anda harus selalu menggunakan git update-ref -dalih - alih rmhal - hal buruk dapat terjadi sebaliknya.
Callum Rogers
3
Ini harus menjadi jawaban yang diterima
Daniel Alder 3-15
1
@CallumRogers mengapa?
wahnfrieden
6
@wahnfrieden karena git bisa menggunakan ref yang sudah dikemas dan tidak akan ada file yang sesuai di refsdirektori
Alexey Ten
17

Ini adalah referensi. Biasanya dibuat oleh git filter-branch- ini adalah pointer ke tempat cabang Anda sebelum Anda berlari git filter-branch.

Dan untuk menghapus referensi apa pun , Anda selalu dapat mendorong apa pun untuk itu di repositori lokal:

git push . :refs/original/refs/heads/master

Jawaban lainnya juga mencakup cara lain yang cukup baik untuk dihapus.

chutz
sumber
1
"Mendorong apa pun" untuk menghapus referensi secara lokal sangat cerdas.
40XUserNotFound
Membuatku bahagia. Saya memiliki referensi ke tag jarak jauh bahwa remote tidak lagi ada. Ini adalah satu-satunya perintah yang berhasil.
RW4