[트러블슈팅] Git 파일명 대소문자 변환 인식 불가 문제
동아리 프로젝트의 이미지 파일명의 대소문자를 변경해야하는 필요가 있어서 변경했던 적이 있었다. 당연히 git이 이러한 변경사항을 인지했을거라고 생각했고(그냥 당연하다고 생각했다) 다른 파일들의 변경사항들이 있어서 git add . 로 바로 합쳐서 commit을 진행했다(이것도 내 실수,, 어떤 파일이 어떤 상태에서 처리되고 있는지 계속 확인하고 올바르게 커밋하는 습관을 들였어야 했는데 변경된 파일들 다 들어갔겠지~하고 넘어갔었다..)
결국 내가 바꿔놨던 이미지 파일의 변경사항이 반영안된 상태로 깃허브에 계속 남아있게 됐고,,
그 버전을 채은이가 clone하게 되었다(문제의 시발점...)
채은이가 코드를 수정할때마다 코드에서 이미지 파일명을 수정해서(왜냐하면 현재 코드 내의 이미지 파일 명은 내 버전이랑 똑같은데 채은이가 clone받은 이미지 파일명은 대소문자 변경이 되기 전 파일명이기 때문) commit하고 내가 pull 받을 때마다 계속 코드 내의 이미지 파일명이 바뀌는 것이다! 그래서 내 코드에서는 다른 파일명(대소문자가 다른)의 import를 요청하고 있어서 오류가 뜨고 있었다.
알고보니 git은 대소문자를 구분하지 않는다고 한다.
이를 해결한 과정(부끄럽지만 1호선 지하철에서 혼자 맥북을 켜고 해결을 했다)을 담았다.
위 접은 글은 어쩌다 이 문제를 맞닥드리게 됐는지에 대한 주절주절 호소하는 글이다..
짧게 설명하자면 git은 파일명의 대소문자의 변경사항을 인지하지 못한다는 것이다.
문제는 그렇게 됐을 경우, 나와 협업하고 있는 팀원의 코드가 잘 작동하지 않을 수 있다는 것이다!
하지만 간단한 git 설정으로 대소문자를 구분하지 못하는 이 설정을 해제할 수 있다.
👉🏻 git 명령어로 설정하기
git config core.ignorecase false
이를 수행하면 git이 파일 대소문자를 구별할 수 있다.
이후 파일명을 바꾸고 commit을 진행하면 된다.
👉🏻 로컬과 github 파일명이 다른 경우
git config core.ignorecase false
# 내 로컬에 있는 파일은 유지한채 원격 파일을 삭제
git rm -r --cached .
# 모든 파일을 stage 상태로 추가
git add .
# commit
git commit -m '커밋메세지'
🧐 왜 구분하지 못하게 만든 것일까?

즉, 파일시스템에서 git이 더 잘 작동하기 위해서 그렇게 만든 것이라고 생각하면 된다.
글에서 설명하는 것처럼 MakeFile 을 찾고 있는데 makefile 을 발견한다면 같은 파일이라고 생각하는 것이다.
기본적으로는 false값으로 설정되지만 git 저장소가 생성될 때는 true로 세팅된다고 한다.