본문 바로가기
Git

[Git] Git에서 파일 이름 대소문자 변경이 반영되지 않을 때 해결법

by clolee 2025. 4. 25.

✅ Git에서 Java 클래스 파일 이름 대소문자 변경이 반영되지 않을 때 해결법

💡 문제 상황

Java 프로젝트에서 클래스 이름을 다음과 같이 수정하고 싶을 때:

src/app/user/loginhandler.java → LoginHandler.java

Eclipse에서 이름만 바꾸거나

git mv loginhandler.java LoginHandler.java

이렇게 해도 Git이 변경을 감지하지 않거나 원격에 반영되지 않는 문제가 발생할 수 있습니다.


🚨 원인

대부분의 운영체제(Windows, macOS)는 파일 시스템이 대소문자를 구분하지 않기 때문입니다.
→ Git이 "이름 안 바뀌었네?"라고 인식할 수 있어요.
→ 그래서 git commit, git push 후에도 GitHub 같은 원격 저장소에는 변경이 반영되지 않음.


✅ 해결 방법: 임시 이름을 거쳐서 확실히 반영

🔁 1. Git에서 대소문자 변경 반영하는 법

# 현재 위치가 어디든 상관없이 가능! (절대 src 디렉토리로 이동할 필요 없음)

git mv src/app/user/loginhandler.java src/app/user/temp.java
git mv src/app/user/temp.java src/app/user/LoginHandler.java

git commit -m "Rename loginhandler.java to LoginHandler.java"
git push origin [브랜치명]

✅ 이 과정을 통해 Git은 실제 변경이 있었음을 확실히 인식합니다.
(temp.java는 단순 중간 단계일 뿐입니다.)


✅ Git이 변경을 인식했는지 확인하려면?

git status

아래처럼 출력되면 성공입니다:

renamed: src/app/user/loginhandler.java -> src/app/user/LoginHandler.java

📌 참고: 자바 파일명은 클래스명과 일치해야 함

Java에서는 클래스명과 파일명이 대소문자까지 정확히 일치해야 컴파일 오류가 발생하지 않습니다.

// LoginHandler.java
public class LoginHandler {
    ...
}

💡 보너스 팁: Git 대소문자 민감하게 만들기 (선택)

운영체제 영향 없이 항상 Git에서 대소문자를 구분하도록 하려면 아래 설정을 사용할 수 있습니다:

git config core.ignorecase false

하지만 프로젝트마다 환경이 다를 수 있으므로 일관성 유지가 어렵다면 추천하진 않아요.


댓글