파일명 대소문자 변경하기 | Git

Bori·2023년 7월 4일
1

어쨌든 공부

목록 보기
22/41

git config core.ignoreCase

core.ignoreCase 옵션은 파일 시스템에서 git이 더 잘 동작할 수 있도록하기 위한 역할을 합니다.

true일 경우 Git은 대소문자를 구분하지 않고 파일을 관리합니다.

git config core.ignorecase true
  • 예를 들어, "Makefile"을 예상하는데 디렉토리 목록에서 "makefile"을 찾으면 git은 같은 파일이라고 가정하고 계속 "Makefile"로 기억합니다.
  • 파일의 이름이나 경로에서 대소문자의 차이를 무시하고 동일한 파일로 취급합니다

false인 경우 대소문자를 구분합니다.

git config core.ignorecase false
  • 기본값은 false이며, git-clone이나 git-init 명령어가 저장소를 생성할 때 core.ignoreCase를 자동으로 true로 설정합니다.

⇒ 따라서 파일의 대소문자만 변경할 경우 core.ignorecase 옵션을 false로 변경한 후 파일명을 변경해야 합니다.

git으로 파일명 변경하기

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 내역에서 볼 수 있습니다.

마무리

  • 예전에 아무것도 모르고 냅다 대소문자 변경했다가 여차저차 힘들었던 경험이 있었기 때문에 파일명을 변경하지 않으려고 조심했지만 또.. 같은 실수를 반복하는..
  • 하지만 이번에는 변경하기 전에 구글링 증말 많이 해보고 했더니 문제 없이 잘 변경했습니다.
  • 다들 안전하게 파일명 변경하세요..!

참고

0개의 댓글