✅ 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
하지만 프로젝트마다 환경이 다를 수 있으므로 일관성 유지가 어렵다면 추천하진 않아요.
'Git' 카테고리의 다른 글
[Git] 협업을 위한 Git 커밋 메시지 작성 가이드 (0) | 2025.04.24 |
---|---|
[Git] Git 명령어: 작업 상태 확인, 브랜치/커밋 이력, push 여부 확인 (0) | 2025.04.24 |
[Git] `git fetch + rebase`를 이용한 로컬 브랜치 최신화, 그리고 main 브랜치에서 다른 브랜치의 변경사항을 병합(merge) (0) | 2025.04.23 |
[Git] GitHub HTTPS 인증 실패: "Support for password authentication was removed" 에러 해결 가이드 (0) | 2025.04.16 |
[Git] Git의 전체 작동 흐름과 주요 명령어 설명 (0) | 2025.04.10 |
댓글