[Git] Branch 와 checkout 의 헤프닝

2025. 10. 22. 01:32·Project/Team
728x90

문제 

🧨 새로운 브랜치의 변경사항을 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) 을 공유 중이라는 것을 알아두도록 하자! 

 

 

728x90

'Project > Team' 카테고리의 다른 글

[Spring Security] CurrentUser 구현체 + ArgumentResolver  (0) 2025.10.29
[JPA + QueryDSL] 이해하기  (0) 2025.10.26
'Project/Team' 카테고리의 다른 글
  • [Spring Security] CurrentUser 구현체 + ArgumentResolver
  • [JPA + QueryDSL] 이해하기
is낫널
is낫널
  • is낫널
    아직은 NULL NULL 합니다
    is낫널
  • 전체
    오늘
    어제
    • 분류 전체보기 (52)
      • Computer Science (12)
        • 운영체제 (3)
        • Java (4)
        • Spring (0)
        • 네트워크 (2)
        • 자료구조 및 알고리즘 (0)
        • 데이터베이스 (1)
      • Algorithm (10)
        • BOJ & SWEA (8)
        • Programmers (0)
        • 이론 (2)
      • Project (7)
        • Team (3)
        • Personal & Toy (4)
      • 사회인 준비생 (22)
        • SSAFY (5)
        • 이직 (1)
        • TIL (14)
      • 무작정 따라해보기 (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
    • 태그
    • 방명록
    • 블로그 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    HTTP
    CS지식
    빈 라인
    알고리즘
    14510 나무 높이
    파이썬
    BOJ
    카카오톡API
    비전공자
    백엔드 면접지식
    그림자 문제
    sw적성진단
    개발공부
    인터럽트핸들러
    Java
    자바
    CPU의 구성요소
    LAMBDA
    backend
    개발자
    딩코딩코
    개발
    AWS
    백엔드
    it세계의 괴물들
    Roy Fielding
    transiant
    문자열
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
is낫널
[Git] Branch 와 checkout 의 헤프닝
상단으로

티스토리툴바