Git Flow는 Vincent Driessen이 2010년 제안한 Git 브랜치 전략이다. 기능 개발, 릴리스, 핫픽스를 위한 체계적인 브랜치 모델로, 릴리스 주기가 명확한 소프트웨어에 적합하다.
브랜치 구조
main (또는 master) ●─────────────●────────────● (v1.0, v2.0)
↑ ↑
develop ─●─●─●─●─●─●─●─●─●─●─●─●─
↑ ↑ ↑
feature/login ─●─●─ │ │
feature/payment ●─●─●─ │
│
release/1.0 ●─●─●
↑
hotfix/security ●─●
브랜치 역할
| 브랜치 | 설명 | 병합 대상 |
|---|
| main | 프로덕션 코드 | — |
| develop | 개발 통합 브랜치 | main |
| feature/* | 새 기능 개발 | develop |
| release/* | 릴리스 준비 | main + develop |
| hotfix/* | 긴급 버그 수정 | main + develop |
워크플로우
bash
# 기능 개발
git checkout -b feature/login develop
# ... 개발 ...
git checkout develop
git merge --no-ff feature/login
git branch -d feature/login
# 릴리스
git checkout -b release/1.0 develop
# ... 버전 번호 수정, QA ...
git checkout main
git merge --no-ff release/1.0
git tag -a v1.0
# 핫픽스
git checkout -b hotfix/critical main
# ... 수정 ...
git checkout main && git merge --no-ff hotfix/critical
git checkout develop && git merge --no-ff hotfix/critical
Git Flow는 명확한 릴리스 주기에 적합하지만, CI/CD를 적극 활용하는 팀은 트렁크 기반 개발(Trunk-Based Development) 을 선호한다.
| 항목 | Git Flow | 트렁크 기반 |
|---|
| 브랜치 | 많음 | main 하나 (단기 브랜치) |
| 릴리스 | 주기적 | 지속적 배포 |
| 적합 | 버전 소프트웨어 | SaaS, CI/CD |
관련 개념
- •Git — Git Flow의 기반
- •DevOps — Git Flow와 CI/CD 파이프라인
- •CI/CD — 트렁크 기반 개발과 연결
- •피처 플래그 — 트렁크 기반 개발의 보완책