[MAC]트러블슈팅&Tip

[git] 협업을 위한 브랜치 작업 중, 메인 브랜치 업데이트 적용 방법, merge 방법

공부하는 나무꾼 2025. 7. 24. 16:26

협업을 진행하다보면, 특히 기능개발할때 브랜치를 나눠서 작업을 하게된다. 

 

이때 메인브랜치의 변경사항을 현재 브랜치에 적용하고 싶긴하지만, 현재 브랜치의 변경사항으로 덮어쓰고 싶을 때 어떻게 할까?

 

0. 작업용 브랜치 생성 및 이동

# 메인 브랜치 최신 상태로 만들기
git checkout [메인 브랜치]
git fetch origin [메인 브랜치]
git pull origin [메인 브랜치]

# 작업 브랜치 생성 및 이동
git checkout -b [작업 브랜치]

e.g.
git checkout -b feat/feature-name

 

1. 현재 브랜치 확인

# 현재 브랜치 확인 (메인: dev, 작업중인 브랜치: feat)
git branch
  dev
* feat

# 만약 현재 작업중인 브랜치가 아니라면 변경해준다.
git checkout [작업중인 브랜치 명]

 

2. 메인 브랜치 가져오기

# 현재 메인 브랜치의 변경사항을 가져온다.
git fetch origin dev

 

3. 작업중인 브랜치(*feat)의 변경사항을 메인 브랜치 위에 덮어쓴다.

# 충돌 파일에서 feat 변경사항이 항상 우선으로 적용되도록 merge
git merge -X ours origin/dev

자동 병합: src/main/java/com/example/moyeorak/service/EnrollmentService.java
Merge made by the 'ort' strategy.
 src/main/java/com/example/moyeorak/config/SecurityConfig.java     | 12 +++++++++++-
 src/main/java/com/example/moyeorak/controller/UserController.java | 59 +++++++++++++++++++++++++++++++++++------------------------
 src/main/java/com/example/moyeorak/dto/EnrollmentRequest.java     | 15 +++------------
 src/main/java/com/example/moyeorak/dto/EnrollmentResponse.java    |  4 +++-
 src/main/java/com/example/moyeorak/service/EnrollmentService.java | 25 +++----------------------
 src/main/java/com/example/moyeorak/service/ProgramService.java    | 25 ++++++++++++++++++++-----
 src/main/java/com/example/moyeorak/service/UserService.java       | 42 ++++++++++++++++++++++++------------------
 7 files changed, 99 insertions(+), 83 deletions(-)
 
# 작업중인 브랜치의 변경사항 적용
git pull origin [작업중인 브랜치]

 

4. 메인 브랜치의 커밋 내역 위에 작업 브랜치의 커밋이 쌓여있는지 확인한다.

git log --oneline --graph --decorate --all

*   2611a2d (HEAD -> feat) Merge remote-tracking branch 'origin/dev' into feat feat 브랜치 -> 최신 dev 업데이트
|\  
| * 9547725 (origin/fix/token-unauthorized-error-9, origin/dev, origin/HEAD) fix: 인증 실패 시 401 오류로 통일 처리 (refs #이슈번호)
| * 94ef762 (origin/fix/refresh-token-reissue-8) fix: refresh token 재발급 오류 수정 (refs #8)

 

5. 기능 개발 종료 후, 메인 브랜치로 Merge 한다.

# 메인 브랜치로 체크아웃
git checkout [메인브랜치]

# 최신 변경사항 가져오기
git fetch origin [메인브랜치]
git pull origin [메인브랜치]

# 작업한 브랜치를 메인 브랜치로 Merge
git merge [작업한 브랜치]

# 원격 메인 브랜치에 푸시
git push origin [메인브랜치]

 

6. 작업한 브랜치 삭제

# 로컬 브랜치 삭제
git branch -d [작업한 브랜치]

# 원격 브랜치 삭제
git push origin --delete [작업한 브랜치]