git fsck가 4개의 다른 저장소에서 동일한 오류로 실패합니다.

git fsck가 4개의 다른 저장소에서 동일한 오류로 실패합니다.

일부 저장소에서 명령을 실행했는데 git fsck그 중 4개에서 동일한 오류가 발생했습니다.

error in tree b2b510c83ea553c587ebe5bc160e92cb7888393a: duplicateEntries: contains duplicate file entries
error in tree b3969ac6fe6b6359d48006e6a4cf3ffd5a4350a3: duplicateEntries: contains duplicate file entries
error in tree 5a7445940626358083a782ba5c81f956c7f82ac5: duplicateEntries: contains duplicate file entries

문제를 해결하는 방법을 아시나요? 모든 사람에게 정확히 동일하다는 것은 무엇을 의미합니까?

답변1

Git은 디렉토리의 내용을 트리 객체에 저장합니다. 일반적으로 트리 개체는 파일 이름 순서에 따라 바이트 값을 기준으로 정렬되어야 합니다.

이 메시지는 이러한 특정 트리 개체에 중복된 항목이 포함되어 있음을 의미하지만 그렇지 않습니다. 이러한 개체를 생성하는 데 어떤 도구를 사용하든 손상된 개체가 생성되고 이제 Git이 불평합니다.

이 문제를 해결하려면 먼저 문제를 일으키는 도구 사용을 중단하여 상황이 악화되는 것을 방지해야 합니다. 그런 다음 git gc --prune=now사용하지 않는 개체 삭제를 즉시 실행할 수 있습니다 . 그런 다음 실행하여 커밋이 사라졌는지 확인할 수 있습니다 git fsck. 기록에 없으면 삭제됩니다.

그래도 문제가 해결되지 않으면 새 저장소를 만들고 다음과 같이 실행하여 저장소를 다시 작성할 수 있습니다.

git fast-export --all | (cd /empty/repository && git fast-import)

이렇게 하면 일부 개체 ID가 반드시 다시 작성되지만 Git은 새 저장소에 쓸 때 중복된 값을 가져오지 않습니다.

관련 정보