이러한 종류의 문제는 대소 문자 만 다른 두 개의 파일 이름을 가진 저장소에서 가져 오려고 할 때 자주 발생합니다. FAT, NTFS는 대소 문자를 구분하지 않는 모드 (본질적으로 Windows에서 사용되는 경우) 또는 HFS +는 대소 문자를 구분하지 않고 두 개의 파일 "foobar"및 "FOOBAR"이있는 경우 Git은 서로 다른 두 개의 파일을 보게됩니다. 파일 시스템은 하나만 볼 수 있으므로 모든 종류의 문제가 발생합니다. Git은 "FOOBAR"이라고 말하고 체크 아웃 한 다음 "foobar"를 체크 아웃합니다. 파일 시스템은 "FOOBAR"의 내용을 단순히 교체하지만 그대로 두는 것으로 간주합니다. 이제 Git에서는 "FOOBAR"이 "foobar"의 내용으로 바뀌고 "foobar"가 사라진 것으로 보입니다.
이 기본적인 문제에는 두 가지 다른 표현이 있습니다. 하나는 저장소에 실제로 대소 문자 만 다른 두 개의 파일이 포함되어있는 경우입니다. 이 경우 대소 문자를 구분하는 파일 시스템에서 작업하거나 이러한 종류의 충돌이 발생하지 않도록 저장소를 편집해야합니다. 대소 문자를 구분하지 않는 파일 시스템은 단순히이 저장소의 내용을 저장할 수 없습니다.
해결할 수있는 다른 경우는 파일의 대소 문자를 변경하는 이름 바꾸기가 발생하는 경우입니다. 예를 들어 Git 저장소에 "EXAMPLE"에서 "example"로의 이름이 포함되어 있다고 가정합니다. Git은 새 버전을 확인하기 전에 디스크에있는 기존 파일을 덮어 쓰지 않는지 확인합니다. "example"이 새 파일 이름이라고 생각하기 때문에 파일 시스템에 존재하는지 묻고 파일 시스템은 "EXAMPLE"을보고 예라고 말하므로 Git은 새 버전을 덮어 쓸 것이라고 생각하므로 체크 아웃을 거부합니다. 추적되지 않은 파일. 이 경우 관심있는 로컬 변경 사항이없는 경우 간단한git reset --hard <revision-to-checkout>일반적으로 문제를 극복하고 새 개정판으로 이동하는 데 충분합니다. 대소 문자를 구분하지 않는 파일 시스템을 사용하는 경우에만 다른 이름으로 파일 이름을 바꾸지 마십시오. 이렇게하면 이와 같은 문제가 발생할 수 있습니다.