이후 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-tree
git reset
답변
실수로 .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")
답변
나는 그 문제가 있었고, 이것으로 ti fix를 시도한다.
rm -f .git/index
git reset
그러나 그것은 작동하지 않았습니다. 해결책은 ? 어떤 이유로 하위 디렉토리에 다른 .git 폴더가 있습니다. 해당 .git 폴더 (주체 아님)를 삭제하고 git reset
다시 삭제 합니다. 일단 삭제되면 모든 것이 다시 작동했습니다.
답변
이것은 나쁜 클론처럼 들립니다. 더 많은 정보를 얻으려면 다음을 시도해보십시오.
git fsck --full
답변
위의 솔루션으로 인해 계속 문제가 발생했기 때문에이 둔한 솔루션을 사용했습니다.
- 다른 곳의 리포지토리를 복제
- 새로운 .git 디렉토리를 커밋하려는 변경 사항이 포함 된 (깨진) 저장소에 복사하십시오.
트릭을 했어. Btw, sed
@hobs가 짐작했던 것처럼 프로젝트 루트에서 작업했습니다. 내 수업을 배웠습니다.
답변
이것은 나를 위해 일했습니다. 이유가 궁금하지만 처음부터 오류가 발생하기 시작했습니다. 어제 로그 아웃했을 때 문제가 없었습니다. 오늘 아침에 로그인하지 않았습니다.
rm .git/index
git reset
답변
자식 서브 모듈 사용자를위한 참고 사항-여기의 솔루션은 그대로 작동하지 않습니다.
예를 들어라는 부모 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