Saya mencoba menghapus file dari repo jarak jauh saya dengan menjalankan:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Tapi Git mengeluhkan itu
Tidak dapat membuat cadangan baru. Cadangan sebelumnya sudah ada di refs / original /
Paksa penimpaan cadangan dengan -f
rm: tidak dapat dihapus /.git-rewrite/backup-refs: Izin ditolak
rm: tidak dapat menghapus direktori /.git-rewrite: Direktori tidak kosong
Ini terjadi setelah saya menghapus direktori .git-rewrite di Windows.
Bagaimana cara menghapus file itu? Ini adalah file 29Mb yang ada di repo saya, jadi saya perlu menghapus file tersebut.
Saya mencoba untuk menghapus komit masuk git rebase -i
, tetapi ternyata karena komit menyentuh banyak file yang berbeda, Git mengeluhkan konflik dan saya membatalkannya untuk aman.
.git-rewrite already exists, please remove it
.Jawaban:
Anda telah melakukan operasi cabang-filter. Setelah filter-branch, Git menyimpan referensi ke commit lama, jika terjadi kesalahan.
Anda dapat menemukannya di
.git/refs/original/…
. Hapus direktori tersebut dan semua file di dalamnya, atau gunakan-f
flag untuk memaksa Git menghapus referensi lama.sumber
-f
) pergi sebelum refs (HEAD
). ref pergi terakhirgit add
. Saya menerima kesalahan yang sama seperti poster asli bahkan setelah menghapus.git/refs/original/
folder dan menggunakan-f
bendera dalamgit filter-branch
perintah. Solusinya, dalam kasus saya, adalah menghapus.git/packed-refs
file.--ignore-unmatch
ke perintahgit rm
dan itu berjalan lancar!Gunakan perintah ini untuk menghapus cadangan asli:
Inilah inti yang saya gunakan untuk memfilter-cabang repo git saya: https://gist.github.com/k06a/25a0214c98bc19fd6817
sumber
.git/refs/original/
tidak menyelesaikan masalah.git show-ref | awk '/ refs.original.refs/{print$2}'
untuk menemukan semua cadangan yang dimiliki repo Anda.Saya memiliki masalah yang sama dan jawaban di atas tidak memperbaikinya. Tidak ada direktori .git / refs / original / yang tersisa. Solusi bagi saya adalah menghapus file .git / pack-refs.
sumber
.git/packed-refs
file, bagaimanapun, dan tidak ada folderoriginal
di.git/refs
. Siapa saja?-r
bendera ke perintah.Tambahkan gaya ke perintah cabang filter.
sumber