문제
🧨 새로운 브랜치의 변경사항을 commit 하지 않았는데도 main 에 적용된 것처럼 보이는 현상 발생
사건의 흐름
1. Github (원격) 의 main 브랜치에서 새로운 브랜치를 생성함
2. 로컬로 돌아와 git fetch origin 을 하여 원격에서 생성된 브랜치를 가져옴
3. 원격에서 fetch 해온 새로운 브랜치로 checkout 하여 패키지명을 변경함
4. 이 때 새로운 브랜치에서 commit 하지 않은 채 로컬 main 브랜치로 checkout 함
- commit 하지 않고 main 브랜치로 체크아웃했던 이유는 혹시 실수로 main 에 반영된 게 아닐까 싶어 확인차 돌아갔었던 차였다.
그런데 새로운 브랜치에서 변경한 사항이 main 에도 똑같이 패키지명이 바뀌어져 있어서 어라? 하며 순간 식은땀이 흘렀다 ㅎ..ㅎ
왜냐하면 패키지명 바꾸자마자 갑자기 모든 라이브러리들이 인식이 안되는 문제가 발생하고 있었기 때문이다.
[문제 해결 더보기 참고]
상황 - gradle project 에서 패키지명 변경하려다 발생한 라이브러리 인식 안되는 문제
이유
1. 패키지명이 com.xxx.demo 에서 com.xxx.dev 로 변경하려 했다고 가정
2. 리팩토링 기능으로 패키지명을 변경 한 후 settings.gradle 파일에서 rootProject.name 까지 야무지게 dev 로 바꿔둠
3. 그러나 build.gradle 에서 group = 'com.xxx' 로만 되어있는 것을 'com.xxx.dev' 로 적었더니 라이브러리 인식이
안되는 문제가 발생한 거였다.
결론
jar 이름은 <rootProject.name>-<version>.jar 로 jar 파일이 만들어지는데
여기서 group 을 붙여 결과가 com.xxx.dev: dev:0.0.1-SNAPSHOT 으로 만들어지는 것이었다.
원래는 rootProject.name 구간에 dev 가 들어가는데 group 에 까지 dev 를 넣게 됨으로써 라이브러리가
해당 프로젝트를 찾지 못하는 일이 발생하게 되면서 인식이 안되게 된 것이었다.
group : 다른 프로젝트가 나를 찾을 때 쓰는 주소(label)
[fetch / checkout]
- fetch : 원격 저장소의 최신 정보를 로컬로 동기화
- checkout : 현재 작업할 브랜치(혹은 커밋) 로 작업 공간 이동
해결 (= 헤프닝 ㅋㅋ.)
이유는 간단했다.
커밋하지 않은 변경사항은 브랜치 간에 공유가 되기 때문이었다.
즉, 새로운 브랜치에서 수정했지만 commit 하지 않은 채로 브랜치를 바꾸게 되면
git 에서는 변경된 파일을 staging 안 한 상태이기 때문에 working directory 에 남겨둔 채 그대로 main 브랜치로 공유가 된다.
그래서 main 도 새로운 브랜치의 변경사항처럼 똑같이 변경된 것으로 보이는 것이다.
이를 해결하려면 새로운 브랜치에서 변경사항을 commit 하고 main 으로 체크아웃하여 돌아오게 되면
변경 파일들은 새로운 브랜치에만 반영이 된 것을 확인할 수 있다.
결론은 브랜치의 포인터는 달라도, 파일은 동일한 공간(Working Directory) 을 공유 중이라는 것을 알아두도록 하자!
'Project > Team' 카테고리의 다른 글
| [Spring Security] CurrentUser 구현체 + ArgumentResolver (0) | 2025.10.29 |
|---|---|
| [JPA + QueryDSL] 이해하기 (0) | 2025.10.26 |