Następnie git init
dodałem i zatwierdziłem kilka plików, wprowadziłem pewne zmiany, dodałem i zatwierdziłem. Skonfiguruj demona git (działającego pod Cygwin na WinXP) i raz sklonował repozytorium. Teraz otrzymuję ten błąd ze sklonowanym repozytorium:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
Czy jest jakiś sposób, aby to naprawić, poza uzyskaniem nowej kopii repozytorium?
git
corruption
Liczba 8
źródło
źródło
Odpowiedzi:
Jeśli problem dotyczy indeksu jako obszaru przejściowego dla zatwierdzeń (tj.
.git/index
), Możesz po prostu usunąć indeks (wykonać kopię zapasową, jeśli chcesz), a następnie przywrócić indeks do wersji w ostatnim zatwierdzeniu:W systemie OSX / Linux:
W systemie Windows:
(Powyższe
reset
polecenie jest takie samo jakgit reset --mixed HEAD
)Można alternatywnie używać niższego poziomu kanalizacji
git read-tree
zamiastgit reset
.Jeśli problem dotyczy indeksu pliku pakietu , możesz go odzyskać za pomocą
git index-pack
.źródło
:w!
a:Gstatus
(z fugitive.vim). Ta odpowiedź zaoszczędziła mi dużo ciągnięcia włosów.erase /s .git\index
, że ja też potrzebowałemerase .git\index.lock
.git reset --keep
? W arkuszugit reset --keep
jest to bezpieczniejsza formagit reset --hard
;git reset --mixed
w ogóle nie dotyka workdir.Być może przypadkowo uszkodziłeś plik .git / index przy pomocy sed w katalogu głównym projektu (być może refaktoryzacji?) Za pomocą czegoś takiego:
aby tego uniknąć w przyszłości, po prostu zignoruj pliki binarne za pomocą grep / sed:
źródło
.git/index
, zawsze możesz je usunąć i odtworzyć za pomocągit reset
(bez--hard
!).sed
coś z czymś takim.find .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
Może to pomóc, jeśli jesteś.git/
tak zepsuty, żegit reset
to nie zadziała. A może chcesz przywrócić istniejący.git/index
bez usuwania go. Nie powiedzie się to oczywiście, jeśli w twoim oryginalnym kodzie lub indeksie było już trochę „Legislatora”.sed
, zastępując mójnew_string
moimold_string
!Miałem ten problem i próbuję naprawić to:
Ale to nie zadziałało. Rozwiązanie ? Z jakiegoś powodu miałem inne foldery .git w podkatalogach. Usuwam te foldery .git (nie główny) i
git reset
ponownie. Po ich usunięciu wszystko znów działało.źródło
To brzmi jak zły klon. Możesz spróbować wykonać następujące czynności, aby uzyskać (ewentualnie?) Dodatkowe informacje:
źródło
Ponieważ powyższe rozwiązania pozostawiły mnie z ciągłymi problemami, zastosowałem to nudne rozwiązanie:
Wykonał lewę. Btw, zrobiłem
sed
w katalogu głównym projektu, jak zgadł @hobs. Nauczyłem się mojej lekcji.źródło
To zadziałało dla mnie. Chociaż jestem ciekawy powodu, dla którego zacząłem otrzymywać błędy. Kiedy wylogowałem się wczoraj, było dobrze. Zaloguj się dziś rano, nie było.
źródło
Uwaga dla użytkowników submodułów git - rozwiązania tutaj nie będą działać tak, jak są.
Załóżmy, że masz
dev
na przykład repozytorium nadrzędne , a Twoje repozytorium podmenu jest wywoływaneapi
.jeśli jesteś w środku
api
i pojawia się błąd wymieniony w tym pytaniu:error: bad index file sha1 signature fatal: index file corrupt
index
Plik nie będzie wewnątrz.git
folderu. W rzeczywistości.git
nie będzie to nawet folder - będzie to dokument tekstowy z lokalizacją prawdziwych danych .git dla tego repozytorium. Prawdopodobnie coś takiego:~/dev/api $ cat .git gitdir: ../.git/modules/api
Zamiast tego
rm -f .git/index
musisz to zrobić:rm -f ../.git/modules/api/index git reset
lub bardziej ogólnie
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset
źródło
Ten problem może wystąpić, gdy w
.git
jednym z podkatalogów znajduje się katalog. Aby to naprawić, sprawdź, czy są tam inne katalogi .git, usuń je i spróbuj ponownie.źródło
Zrobiłem prostą sztuczkę. Sklonowałem repozytorium do nowego folderu. Skopiowałem folder .git z nowego folderu do starego folderu repozytorium, zastępując tam .git.
źródło
Więcej informacji na https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
źródło
To niedorzeczne, ale właśnie uruchomiłem ponownie komputer (Mac), a problem zniknął, jakby nigdy się nie zdarzyło. Nienawidzę brzmieć jak pomocnik ...
źródło
Możesz także spróbować przywrócić poprzednią wersję pliku (jeśli używasz systemu operacyjnego Windows)
źródło