git

🧭 실무 브랜치 전략 완벽 정리 — Git Flow vs Trunk Based

mirabo01 2025. 11. 4. 22:06

“브랜치는 알겠는데,
실무에서는 브랜치를 어떻게 나누고, 언제 병합해야 할까?”

입문자 단계에서는 main과 feature 정도만 사용하지만,
팀 프로젝트나 서비스 운영 단계로 가면
명확한 브랜치 전략(Workflow) 이 필요하다.

이번 글에서는 실무에서 가장 널리 쓰이는 두 가지 전략,
Git Flow 와 ✅ Trunk Based Development
를 비교하고, 실제 예시와 함께 최적의 선택 기준을 알려준다.


💡 1. 브랜치 전략이 중요한 이유

“팀 프로젝트는 코드를 나누는 게 아니라, 책임을 나누는 것이다.”

프로젝트 규모가 커질수록

  • 누가 어디서 개발 중인지
  • 어느 브랜치가 배포 가능한지
  • 어떤 버전이 안정적인지

이 모든 걸 관리해야 한다.

브랜치 전략은 이런 협업의 혼란을 방지하고,
안정적인 배포 파이프라인을 만드는 설계도다.


🌿 2. 브랜치 전략의 두 축

현업에서 가장 많이 쓰이는 전략은 두 가지다 👇

전략 특징 주요 사용처

Git Flow 브랜치가 체계적으로 나뉨 (명확한 단계 구분) 팀 단위 / 배포 주기 긴 프로젝트
Trunk Based 단일 브랜치 중심, 빠른 배포 스타트업 / 지속 배포(CI/CD) 환경

이 둘은 방향성이 완전히 다르다.
Git Flow는 “안정성 중심”, Trunk는 “속도 중심”이다.


⚙️ 3. Git Flow 구조 이해하기

“대형 프로젝트에서 가장 전통적이고 안전한 방식”

Git Flow는 다음 5개의 주요 브랜치로 구성된다 👇

main  →  develop  →  feature / release / hotfix 

🔹 main

  • 실제 서비스(배포) 중인 안정 버전
  • 항상 테스트 완료된 코드만 포함

🔹 develop

  • 개발자들이 통합하는 브랜치
  • 새로운 기능(feature)을 merge하기 전 단계

🔹 feature/브랜치명

  • 개별 기능 개발용 (ex: feature/login)
  • 완료되면 develop으로 merge

🔹 release

  • 배포 전 QA, 테스트용
  • develop에서 파생 → main으로 merge

🔹 hotfix

  • 운영 중 긴급 수정용
  • main에서 직접 파생 → 수정 후 main + develop에 merge

🧩 4. Git Flow 예시 흐름도

main 
 ├─ hotfix/login-bug 
 │ 
 └─ develop 
      ├─ feature/signup 
      ├─ feature/profile 
      └─ release/v1.0 

💬 요약 흐름:
feature → develop → release → main

“main은 항상 깨끗해야 하고, feature는 실험용이다.”


🧱 5. Git Flow의 장점과 단점

구분 장점 단점

✅ 장점 안정적인 릴리즈 관리 / 병렬 개발 가능 / QA 분리 브랜치 많아 관리 복잡 / 배포 속도 느림
⚠️ 단점 머지 충돌 발생 가능 / 소규모 프로젝트엔 비효율 구조적 이해 필요

💡 적합한 상황:

  • 팀 인원이 3명 이상
  • 정기 배포 (1~2주 단위)
  • QA/운영 프로세스가 분리된 서비스

⚡ 6. Trunk Based Development란?

“브랜치를 최소화하고, 빠르게 병합하여 즉시 배포하는 방식”

Trunk(기둥)은 곧 main이다.
모든 개발자는 main 기반에서 짧은 브랜치를 만들고 빠르게 병합한다.

🔹 핵심 개념

  • 브랜치는 짧게 유지 (1~2일 이내 병합)
  • feature/*는 임시 작업용
  • CI/CD 자동화로 항상 main 배포 가능

예시 흐름 👇

main 
 ├─ feature/header-fix 
 ├─ feature/payment 
 └─ feature/theme-update 

🧩 7. Trunk Based의 장단점

구분 장점 단점

✅ 장점 빠른 배포, 단순한 구조, CI/CD 친화적 코드 품질 관리 어려움
⚠️ 단점 QA 과정 단축으로 버그 유입 가능 브랜치 충돌 빈번

💡 적합한 상황:

  • 스타트업 / 소규모 팀
  • 배포 자동화 구축됨 (GitHub Actions, Jenkins 등)
  • “하루에도 여러 번 배포”가 필요한 서비스

🔍 8. 두 전략 비교표

항목 Git Flow Trunk Based

목적 안정적 릴리즈 빠른 배포, 민첩한 개발
브랜치 수 많음 (5~6개) 적음 (1~3개)
병합 주기 느림 빠름
QA/테스트 분리됨 배포 후 모니터링 중심
적합 대상 대규모 팀 / 서비스 소규모 스타트업 / SaaS
예시 은행, 공공기관, 대형 플랫폼 스타트업, SaaS 서비스

💬 핵심 요약

“Git Flow는 안정성, Trunk Based는 속도”


🧠 9. 현실적인 절충안: Semi-Trunk 구조

요즘은 완전한 Git Flow나 Trunk보다는
**“단순화된 하이브리드 구조”**가 많이 쓰인다 👇

main 
 ├─ develop 
 └─ feature/* 
  • main: 배포용
  • develop: 테스트/QA용
  • feature: 작업용

✅ Git Flow의 안정성 + Trunk의 단순함
→ 스타트업, 소규모 팀에서 가장 많이 쓰이는 실무형 전략이다.


⚙️ 10. 실무 적용 가이드

상황 추천 전략 이유

스타트업 / MVP 개발 Trunk Based 배포 속도와 실험 중심
사내 시스템 / 정부 과제 Git Flow 릴리즈 일정 고정, QA 필수
중소규모 SaaS Hybrid (main/develop/feature) 관리 용이 + 안정성 확보

💡 전략보다 중요한 건 일관성이다.
팀 전체가 같은 규칙을 따르는 것이 최고의 전략이다.


🧭 11. 브랜치 네이밍 & 커밋 규칙 예시

구분 예시 설명

feature feature/login-form 신규 기능
fix fix/header-bug 버그 수정
hotfix hotfix/payment-error 긴급 수정
release release/v1.2.0 배포용
커밋 feat: 로그인 기능 추가 기능 단위 명확히 기록

💬 명확한 브랜치 이름과 커밋 메시지는 협업의 언어다.


🏁 마무리 — “브랜치 전략은 팀 문화다”

Git Flow, Trunk Based, Hybrid…
정답은 없다.
중요한 건 **“우리 팀이 지속적으로 유지 가능한 구조”**를 선택하는 것이다.

Git은 단순한 기술이 아니라,
팀이 어떻게 협업하고, 어떻게 배포하는지를 보여주는 조직의 문화다.

💬 “좋은 개발 문화는 깔끔한 브랜치 전략에서 시작된다.”

다음 편에서는
충돌(conflict) 해결 방법
VSCode로 병합하는 실전 예시를 다룬다.