Setelah itu git init
, saya menambahkan dan melakukan beberapa file, membuat beberapa perubahan, menambahkan dan melakukan. Atur daemon git (berjalan di bawah Cygwin pada WinXP) dan kloning repositori sekali. Sekarang, saya mendapatkan kesalahan ini dengan repositori kloning:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Apakah ada cara untuk memperbaikinya, selain mendapatkan salinan baru dari repositori?
git
corruption
Nomor 8
sumber
sumber
Jawaban:
Jika masalah dengan indeks sebagai area pementasan untuk komit (yaitu
.git/index
), Anda bisa menghapus indeks (membuat salinan cadangan jika Anda mau), dan kemudian mengembalikan indeks ke versi di komit terakhir:Di OSX / Linux:
Di Windows:
(
reset
Perintah di atas sama dengangit reset --mixed HEAD
)Anda alternatif dapat menggunakan tingkat yang lebih rendah pipa
git read-tree
bukangit reset
.Jika masalah dengan indeks untuk packfile , Anda dapat memulihkannya menggunakan
git index-pack
.sumber
:w!
in:Gstatus
(dari fugitive.vim). Jawaban ini menyelamatkan saya dari banyak penarik rambut.erase /s .git\index
, saya juga butuherase .git\index.lock
.git reset --keep
saja? Di Tower Git Cheat Sheet dijelaskan sebagai: Setel ulang pointer HEAD Anda ke komit sebelumnya dan pertahankan perubahan lokal yang tidak dikomitgit reset --keep
bentuknya lebih amangit reset --hard
;git reset --mixed
tidak menyentuh workdir sama sekali.Anda mungkin telah secara tidak sengaja merusak file .git / index dengan sed pada root proyek Anda (mungkin refactoring?) Dengan sesuatu seperti:
untuk menghindari ini di masa depan, abaikan saja file biner dengan grep / sed Anda:
sumber
.git/index
, Anda selalu dapat menghapusnya dan membuat ulang dengangit reset
(tanpa--hard
!).sed
dengan sesuatu sepertifind .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
Ini mungkin membantu jika Anda.git/
begitu rusak sehinggagit reset
tidak akan berfungsi. Atau mungkin Anda ingin mengembalikan yang sudah ada.git/index
tanpa menghapusnya. Ini akan gagal, tentu saja, jika kode atau indeks asli Anda sudah memiliki "Legislator" di dalamnya.sed
dengan mengganti sayanew_string
dengan milik sayaold_string
!Saya punya masalah itu, dan saya mencoba memperbaikinya dengan ini:
TAPI itu tidak berhasil. Solusinya ? Untuk beberapa alasan saya punya folder .git lain di sub direktori. Saya menghapus folder .git itu (bukan yang utama) dan
git reset
lagi. Setelah dihapus, semuanya bekerja kembali.sumber
Ini terdengar seperti klon yang buruk. Anda dapat mencoba yang berikut ini untuk mendapatkan (mungkin?) Informasi lebih lanjut:
sumber
Karena solusi di atas membuat saya terus mengalami masalah, saya menggunakan solusi yang membosankan ini:
Lakukan triknya. Btw, saya melakukan
sed
root proyek seperti dugaan @hobs. Belajar pelajaran saya.sumber
Ini berhasil untuk saya. Meskipun saya ingin tahu alasan saya mulai mendapatkan kesalahan di tempat pertama. Ketika saya keluar kemarin, itu baik-baik saja. Masuk pagi ini, ternyata tidak.
sumber
Catatan untuk pengguna git submodule - solusi di sini tidak akan bekerja untuk Anda apa adanya.
Katakanlah Anda memiliki repositori induk yang dipanggil
dev
, misalnya, dan repositori submodule Anda dipanggilapi
.jika Anda berada di dalam
api
dan Anda mendapatkan kesalahan yang disebutkan dalam pertanyaan ini:error: bad index file sha1 signature fatal: index file corrupt
The
index
File tidak akan berada di dalam sebuah.git
folder. Bahkan,.git
bahkan tidak akan menjadi folder - itu akan menjadi dokumen teks dengan lokasi data .git nyata untuk repositori ini. Kemungkinan seperti ini:~/dev/api $ cat .git gitdir: ../.git/modules/api
Jadi, alih-alih
rm -f .git/index
, Anda perlu melakukan ini:rm -f ../.git/modules/api/index git reset
atau, lebih umum,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset
sumber
Masalah ini dapat terjadi ketika ada
.git
direktori di bawah salah satu subdirektori. Untuk memperbaikinya, periksa apakah ada direktori .git lain di sana, dan hapus dan coba lagi.sumber
Saya melakukan trik sederhana. Saya mengkloning repo ke folder baru. Menyalin folder .git dari folder baru ke folder lama repo, menggantikan .git di sana.
sumber
Info lebih lanjut di https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
sumber
Ini konyol tapi saya baru saja me-reboot mesin saya (mac) dan masalahnya hilang seperti itu belum pernah terjadi. Aku benci terdengar seperti pria pendukung ...
sumber
Anda juga dapat mencoba mengembalikan ke versi file sebelumnya (jika Anda menggunakan os windows)
sumber