본문 바로가기
▼ 코딩 공부하기

💻 Git branch merge, Git flow Branch 전략 알아보기 (feat. 왕초보 위클리 페이퍼 #2)

by mdeeno 2025. 12. 5.
반응형

안녕하세요! 개발자 꿈나무 엠디노입니다.

지난 포스팅에서 말한 것처럼 '웹개발 풀스택' 과정을 훈련하고 있습니다.

(벌써 2주나 해버린!)

 

이번에는  '위클리 페이퍼 #2'를 포스팅하고자 합니다.


혹시 1탄이 궁금하시다면 아래 링크를 클릭해주세요..!

⭐️  위클리 페이퍼 #1-CSS Cascading, 시맨틱 태그 [바로가기] ⭐️

 

각설하고 바로 시작하겠습니다.


⭐️ 위클리 페이퍼 #2 주제

  • 깃(Git)에서 브랜치 머지(branch merge) 방법들과 각 방법의 특징에 대해 설명
  • 깃 플로우 브랜치(Git Folw Branch) 전략에 대해 설명

이번 숙제는 강의 후에 작성하는 거라 지난 포스팅과 궤가 다릅니다!

 

이 주제를 보고 든 생각은....  바로바로....

"아 그거 나 들었는데... 아는데...!!" 였습니다.

 

그 후... 또 수많은 서칭과... 강의 복기와...

강사님의 은총인 노션과... 갓 구글의 재미나이가 준 정보들을 merge하여...

(이게 개발자의 길인거죠 강사님?)

 

자 이제 숙제 시작해보겠습니다...!

(본격 숙제 포스팅 시작)


1. Git에서 branch merge, 각 방법의 특징

자자, 어떻게 시작해야하나 고민을 하다가 세가지를 뜯어서 간략히 소개부터 해야겠습니다.

(강의 복기도 할겸...)

 

💻  기본설명 - 개발을 위해 이용(깃), 각자 작업(브랜치), 브랜치 병합(머지)

- 깃(Git) : 소프트웨어 개발의 버전 관리, 동시 협업을 위한 무료 공개 소프트 웨어 

- 브랜치(Branch) : Git가장 핵심적인 기능, 독립적인 코드 관리개발 흐름을 의미함(나뭇가지 모델 어쩌구 저쩌구)

- 머지(merge) : 한 브랜치변경 내용을 다른 브랜치에 병합, 여려 결과를 하나로 모으는 Git의 기능

역시 글로 정리해보니까 다시 기억이 새록새록 (배운지 얼마 안되긴 함)

Git branch merge 설명 이미지 (출처 : https://han-joon-hyeok.github.io/posts/git-branch-merge/)

 

💻  Git branch merge 방법 및 특징 - 주로 3가지, 3-Way Merge 쓰기

간단히 설명하자면 위에서 설명한대로 깃에서 브랜치를 머지(병합) 한것인데..

여러가지 방법이 있습니다.

 

3-Way Merge (Merge Commit 생성)  ⭐️⭐️⭐️

  • 상황: 두 브랜치서로 다른 커밋이 존재(분기된 경우)
  • 동작: 병합 내역 기록을 위한 새로운 Merge Commit이 만들어지고, 커밋 메시지 작성 창이 열림
  • 결과: 그래프에서 두 브랜치가 하나로 합쳐지고, 병합 커밋이 명확히 남음
  • 문제점: 브랜치가 많고, 병합이 많을 경우 복잡하고 지저분해짐
출처 : https://kangdy25.tistory.com/199#google_vignette

 

Fast-Forward Merge

  • 상황: 내용을 받을 브랜치에 신규 커밋이 없고, 가져올 브랜치만 계속 앞으로 나아간 경우
  • 동작: Merge Commit 없이 포인터만 빨리감기(FF)처럼 이동
  • 문제점: 별도의 작업 흐름을 파악하기 어렵게 히스토리가 한 줄로 합쳐짐
출처 : https://kangdy25.tistory.com/199#google_vignette

 

Rebase & Merge

  • 상황: 기존 브랜치가 뻗어나가다 다른 길로 가는 경우
  • 동작: 브랜치가 뻗어나온 기준점을 변경
  • 문제점: 하나의 브랜치로 작업한 것처럼 히스토리가 한 줄임, 브랜치끼리 작업 내역 차이가 많은 경우 충돌 발생

출처 : https://kangdy25.tistory.com/199#google_vignette

 

그외 공부하다보니 Squash & Merge 등 다른 머지들도 있는 것 같습니다.

 

하지만 개발을 비롯한 다양한 직군들에서

일을 하다보면 필연적으로 이전 작업으로 돌아가야할 경우가 생깁니다.

 

그리고 혹시 잘못된 게 있고, 그 흐름을 명확히 파악하기 위해선

복잡하더라도 히스토리가 명확사게 남아있는 것이 잘못을 바로 잡고, 나아가는데 

제일 좋다는 것을 뼈저리게 공감합니다.

 

따라서, 강사님이 강조하고 알려주신 3-Way-Merge 방식을 최대한 고수할 거 같습니다.

 

 

⭐️ 결론,  3-Way-Merge 최고.. 강사님 최고.. 


2. Git Folw 브랜치 전략

Git에는 Git Flow, GitHub Flow 다양한 브랜치 전략이 있음.

Git Flow는 Vincent Driessen이 제안한 가장 유명하고 표준적인 브랜치 관리 전략.

(우리나라에서도 우아한형제들, 당근마켓(페이) 등에서 사용)

 

핵심은 브랜치마다 정해진 역할과 수명(Life Cycle)이 있다는 것...

 

# 기본설명 - 5가지 브랜치를 활용하여 운영 및 개발 ⭐️⭐️⭐️

Git Flow는 크게 5가지 종류의 브랜치를 사용하여 운영함

 

  • main: 사용자에게 언제든 배포 가능한, 에러 없는 최종 제품 상태의 코드를 관리하는 브랜치
  • develop: 다음 배포를 목표로 개발된 모든 기능이 하나로 모이는 개발 중심 브랜치
  • feature: develop에서 갈라져 나와, 새로운 기능을 개발하고 완성되면 다시 합치는 브랜치
  • release: 기능 개발이 끝난 후, 실 배포 직전에 최종 테스트와 마무리 작업을 하는 브랜치
  • hotfix: 이미 배포된 main 버전에서 발생한 치명적인 버그긴급하게 수정하는 브랜치

 

출처 ; https://medium.com/@sungjk/매일-배포하는-팀이-되는-여정-1-브랜치-전략-개선하기-59484ede3186

# 요약 - 효율적이나 관리규칙이 필요

  • 브랜치를 여러가지로 나누어서 작업(메인, 디벨롭, 릴리즈 등)
  • 작업을 한 후 배포용 main, 개발용 develop 등으로 머지하여 관리
  • 효율적, 합리적 운영을 위해 역할이 명확하고 관리규칙이 필요함
  • 공동작업을 위한 효율적 전략
  • 우리나라에서는 배달의 민족(우아한형제들)에서 사용함 

 

⭐️ 결론,  대체적으로 좋지만, 관리규칙이 없으면 엉키고 난리난다.. 

 


 

 

이상 개발자 꿈나무 엠디노였습니다...

머지않아 크고 작은 숙제와 문제들로 찾아뵙겠습니다..

 

그럼 이만!

 

 

반응형