Development Tip

Git 사용시 "오류 : 잘못된 인덱스 – 치명적 : 인덱스 파일 손상"해결 방법

yourdevel 2020. 10. 3. 12:06
반응형

Git 사용시 "오류 : 잘못된 인덱스 – 치명적 : 인덱스 파일 손상"해결 방법


이후 git init에 몇 개의 파일을 추가 및 커밋하고 일부를 변경하고 추가 및 커밋했습니다. git 데몬 (WinXP의 Cygwin에서 실행)을 설정하고 저장소를 한 번 복제합니다. 이제 복제 된 저장소에서이 오류가 발생합니다.

$ git status
error: bad index file sha1 signature
fatal: index file corrupt

저장소의 새 복사본을 얻는 것 외에이 문제를 해결할 수있는 방법이 있습니까?


문제가 커밋을위한 스테이징 영역 인 인덱스에 있는 경우 (예 :).git/index 인덱스를 제거하고 (원하는 경우 백업 복사본 만들기) 마지막 커밋에서 인덱스를 버전으로 복원 할 수 있습니다.

OSX / Linux :

rm -f .git/index
git reset

Windows의 경우 :

del .git\index
git reset

( reset명령은와 동일 git reset --mixed HEAD)

대신 더 낮은 레벨의 배관을 사용할 수 있습니다 .git read-treegit reset


packfile의 색인에 문제가있는 경우을 사용하여 복구 할 수 있습니다 git index-pack.


프로젝트 루트에서 sed를 사용하여 .git / index 파일을 실수로 손상했을 수 있습니다 (아마도 리팩토링?).

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr "$SEARCHPATERN" "$PROJECTROOT")

앞으로 이것을 피하려면 grep / sed로 바이너리 파일을 무시하십시오.

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr --binary-files=without-match "$SEARCHPATERN" "$PROJECTROOT")

이것은 나쁜 복제품처럼 들립니다. 더 많은 정보를 얻기 위해 다음을 시도 할 수 있습니다.

git fsck --full

나는 그 문제가 있었고 이것을 수정하려고 시도했습니다.

rm -f .git/index
git reset

하지만 작동하지 않았습니다. 해결책은 ? 어떤 이유로 하위 디렉토리에 다른 .git 폴더가 있습니다. 나는 그 .git 폴더 (주체가 아님)를 git reset다시 삭제 합니다. 일단 삭제되면 모든 것이 다시 작동했습니다.


이것은 나를 위해 일했습니다. 처음에 오류가 발생하기 시작한 이유가 궁금합니다. 어제 로그 아웃했을 때는 괜찮 았습니다. 오늘 아침에 로그인하지 않았습니다.

rm .git/index

git reset

위의 솔루션으로 인해 계속 문제가 발생했기 때문에이 지루한 솔루션을 사용했습니다.

  1. 다른 곳에서 저장소의 새 복사본을 복제
  2. 커밋하려는 변경 사항이 포함 된 (깨진) 저장소에 신선한 .git 디렉터리를 복사합니다.

트릭을했습니다. Btw, sed@hobs가 추측 한대로 프로젝트 루트에서 작업했습니다. 내 교훈을 배웠다.


git 하위 모듈 사용자를위한 참고 사항-여기의 솔루션은있는 그대로 작동하지 않습니다.

예를 들어라는 상위 dev저장소가 있고 하위 모듈 저장소가라고 가정 해 보겠습니다 api.

내부에 api있고이 질문에 언급 된 오류가 발생하는 경우 :

error: bad index file sha1 signature fatal: index file corrupt

index파일은 내부되지 않습니다 .git폴더. 사실 .git은 폴더가 아닙니다.이 저장소에 대한 실제 .git 데이터의 위치가 포함 된 텍스트 문서가됩니다. 아마도 다음과 같습니다.

~/dev/api $ cat .git gitdir: ../.git/modules/api

따라서 대신 rm -f .git/index다음을 수행해야합니다.

rm -f ../.git/modules/api/index git reset

또는 더 일반적으로

rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset


이 문제는 .git하위 디렉터리 중 하나 아래 디렉터리 가있을 때 발생할 수 있습니다 . 문제를 해결하려면 다른 .git 디렉토리가 있는지 확인하고 제거하고 다시 시도하십시오.


.git / index에서 인덱스 파일 이름 바꾸기와 git reset 작업이 같은 문제에 직면했습니다.


rm -f .git/index
git reset

https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index 에서 자세한 정보


This is ridiculous but I just have rebooted my machine (mac) and the problem was gone like it has never happened. I hate to sound like a support guy...


You can also try for restore to previous version of the file (if you are using windows os)

참고URL : https://stackoverflow.com/questions/1115854/how-to-resolve-error-bad-index-fatal-index-file-corrupt-when-using-git

반응형