core.ignoreCase 옵션은 파일 시스템에서 git이 더 잘 동작할 수 있도록하기 위한 역할을 합니다.
true
일 경우 Git은 대소문자를 구분하지 않고 파일을 관리합니다.git config core.ignorecase true
false
인 경우 대소문자를 구분합니다.git config core.ignorecase false
false
이며, git-clone이나 git-init 명령어가 저장소를 생성할 때 core.ignoreCase를 자동으로 true
로 설정합니다.⇒ 따라서 파일의 대소문자만 변경할 경우 core.ignorecase 옵션을 false
로 변경한 후 파일명을 변경해야 합니다.
git은 운영체제의 파일 시스템에 의존하고, Windows나 macOS의 파일 시스템은 파일명의 대소문자가 달라도 같은 파일로 인식합니다.
그래서 탐색기에서 파일명의 대소문자를 수정해도 git 변경 사항에 나타나지 않습니다.
그럼 어떻게 해야 파일명을 안전하게 변경할 수 있을까요?
git mv
명령어git으로 관리되는 프로젝트에서 파일명을 변경할 때 사용하는 명령어 입니다.
git mv oldName newName
git mv Colors.ts colors.ts
이렇게 하면 git 변경 사항에 나타나 commit 대기 상태가 됩니다.
git mv
시 bad source 에러가 발생한 경우git mv
시 해당 디렉토리에 변경하려는 파일이 없을 때 bad source 에러가 발생합니다.
fatal: bad source, source=Colors.ts, destination=colors.ts
변경하려는 파일이 있는 곳으로 이동해서 다시 시도해보면..!
cd src/constants/styles
git mv Colors.ts colors.ts
git mv
시 destination exists 에러가 발생한 경우destination exists 에러가 발생합니다. 참나
파일명이나 폴더명의 대소문자만 변경하는 경우 발생합니다.
fatal: destination exists, source=src/constants/styles/Colors.ts, destination=src/constants/styles/colors.ts
이럴 땐 아래와 같이 임시 파일명으로 변경 후 다시 변경하려고 했던 파일명으로 변경하는 과정이 필요합니다.
git mv Colors.ts temp.ts
git mv temp.ts colors.ts
git 저장소에 캐싱된 파일이 남아있는 경우
다음의 명령어를 이용해 캐시를 삭제합니다.
그리고 전부 스테이징 영역에 올린 후 commit을 합니다.git rm -r --cached . git add . git commit -m "🔥 캐시된 파일 삭제"
⇒ 저는 이 과정이 필요하지 않았습니다. 휴..!
파일명만 정상적으로 변경된 것을 github commit 내역에서 볼 수 있습니다.
참고