1. 문제 발생❓
Git은 기본적으로 파일명의 대소문자를 구분하지 않습니다. 예를 들어, Hero.style.ts를 hero.style.ts로 변경하려고 할 때 Git은 이를 같은 파일로 인식하여 변경사항을 제대로 추적하지 못합니다.
bash
Copy
$ git mv Hero.style.ts hero.style.ts
fatal: bad source, source=Hero.style.ts, destination=hero.style.ts
이 오류 메시지는 Git의 파일 이름 변경 명령어 실행 중 발생한 문제를 나타냅니다.
git mv Hero.style.ts hero.style.ts 명령은 파일 이름을 대문자 'Hero.style.ts'에서 소문자 'hero.style.ts'로 변경하려는 시도였습니다. "fatal: bad source, source=Hero.style.ts, destination=hero.style.ts" 오류는 원본 파일(Hero.style.ts)을 찾을 수 없다는 의미입니다.
2. 원인 추론 🔎
- Git의 기본 설정(core.ignorecase=true)이 파일명 대소문자를 무시
- 로컬/원격 저장소의 캐시된 파일명 정보와 실제 파일명이 불일치
3. 해결 과정 📋
1. Git 대소문자 구분 활성화
bash
Copy
git config core.ignorecase false
2. Git 캐시 초기화
- 기존에 캐시된 파일명 정보를 모두 제거합니다.
bash
Copy
git rm -r --cached .
3. 변경된 파일 다시 추가
- 모든 파일을 새로운 파일명으로 다시 추가합니다.
bash
Copy
git add .
4. 변경사항 커밋
bash
Copy
git commit -m "refactor: 스타일 파일명 대소문자 구분 수정"
4. 결과 ❤🔥
- 파일명의 대소문자가 정확하게 구분되어 관리됨
- 캐시 관련 이슈(ex: +4표시)가 해결됨
- 로컬과 원격 저장소의 파일명이 일치하게 됨
< 주의 사항 >
- 이 방법은 모든 파일의 Git 캐시를 초기화하므로, 커밋하지 않은 변경 사항이 있다면 먼저 커밋하거나 stash해두는 것이 좋습니다.
- 팀프로젝트일 경우, 다른 팀원들에게 이러한 변경 사항을 알리는 것이 좋습니다.
- Git의 core.ignorecase 설정은 파일 시스템의 대소문자 구분 여부와는 별개입니다.
- macOS의 경우 기본적으로 대소문자를 구분하지 않는 파일 시스템을 사용하지만, Git 설정을 통해 대소문자 구분이 가능합니다.
- 이렇게 하면 파일명 컨벤션을 더 정확히 관리할 수 있으며, 특히 JavaScript/TypeScript 프로젝트에서 import 경로의 일관성을 유지하는데도 도움이 됩니다.
- 다시 원래 설정으로 되돌리는 것이 좋습니다.
git config core.ignorecase true
'인턴' 카테고리의 다른 글
[ Troubleshooting🛠️ ] HTML <picture>과 <source> 태그 활용하기 (0) | 2025.03.25 |
---|---|
Vercel CLI을 이용한 환경변수 세팅 (0) | 2025.03.25 |
자동 스크롤 useRef 적용하기 💫 (0) | 2025.03.14 |
말줄임표: ellipsis (0) | 2025.03.04 |
Route Handler (0) | 2025.02.12 |