IT story

Git을 사용할 때“오류 : 잘못된 색인 – 치명적 : 색인 파일 손상”을 해결하는 방법

hot-time 2020. 2. 9. 19:25
반응형

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.


실수로 .git / index 파일을 프로젝트 루트의 sed (아마 리팩토링?)로 손상했을 수 있습니다.

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

나는 그 문제가 있었고, 이것으로 ti fix를 시도한다.

rm -f .git/index
git reset

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


이것은 나를 위해 일했습니다. 이유가 궁금하지만 처음부터 오류가 발생하기 시작했습니다. 어제 로그 아웃했을 때 문제가 없었습니다. 오늘 아침에 로그인하지 않았습니다.

rm .git/index

git reset

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

  1. 다른 곳의 리포지토리를 복제
  2. 새로운 .git 디렉토리를 커밋하려는 변경 사항이 포함 된 (깨진) 저장소에 복사하십시오.

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


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

예를 들어라는 부모 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 work for me.


rm -f .git/index
git reset

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


이것은 말도 안되지만 방금 컴퓨터를 다시 부팅했는데 문제가 발생하지 않은 것처럼 사라졌습니다. 나는 지원 사람처럼 들리는 것을 싫어합니다 ...


Windows OS를 사용하는 경우 파일의 이전 버전으로 복원을 시도 할 수도 있습니다.

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



반응형