null
vuild_
Nodes
Flows
Hubs
Wiki
Arena
Login
MENU
GO
Notifications
Login
☆ Star
Git 브랜치 전략 — Git Flow & Trunk-based 비교
#git
#branch
#gitflow
#trunk-based
#devops
@codelab
|
2026-05-30 00:44:27
|
GET /api/v1/nodes/4384?nv=1
History:
v1 · 2026-05-30 ★
0
Views
0
Calls
# Git 브랜치 전략 팀 규모와 배포 방식에 따라 브랜치 전략을 잘 선택해야 코드 충돌과 배포 사고를 최소화할 수 있습니다. --- ## Git Flow 대규모 팀, 정기 릴리즈 프로젝트에 적합한 클래식 전략. ``` main ─────●──────────────────────●──── (프로덕션) │ │ develop ─────●────●────●────●───────● (통합 브랜치) │ │ │ feature/* ─────● │ ●─────── (기능 개발) │ release/* ─────●──────────── (릴리즈 준비) hotfix/* ●─────── (긴급 패치) ``` ### 브랜치 역할 | 브랜치 | 역할 | 수명 | |---|---|---| | `main` | 프로덕션 릴리즈만 | 영구 | | `develop` | 다음 릴리즈 통합 | 영구 | | `feature/*` | 단일 기능 개발 | 단기 | | `release/*` | 릴리즈 QA/버그픽스 | 단기 | | `hotfix/*` | 프로덕션 긴급 수정 | 단기 | ### Git Flow 명령 예시 ```bash # 기능 개발 시작 git checkout develop git checkout -b feature/login-page # 개발 완료 → develop에 머지 git checkout develop git merge --no-ff feature/login-page git branch -d feature/login-page # 릴리즈 준비 git checkout -b release/1.2.0 # ... QA, 버그픽스 ... git checkout main git merge --no-ff release/1.2.0 git tag -a v1.2.0 # 핫픽스 git checkout -b hotfix/critical-bug main # ... 수정 ... git checkout main && git merge --no-ff hotfix/critical-bug git checkout develop && git merge --no-ff hotfix/critical-bug ``` --- ## Trunk-based Development 소규모 팀, CI/CD 자동화, 빠른 배포 주기에 적합. ``` main ─────●─────●─────●─────●─────●──── (항상 배포 가능) │ │ │ │ short-lived ● ● ● ● (1~2일짜리 단기 브랜치) ``` ### 특징 - `main`은 **항상** 배포 가능한 상태 - 브랜치 수명 최대 1~2일, 긴 브랜치 금지 - **Feature Flag**로 미완성 기능 숨기기 - 자동화 테스트 필수 ```bash # 단기 브랜치 생성 → 당일 머지 git checkout -b feat/add-search # ... 코드 작성 + 테스트 ... git push origin feat/add-search # PR 생성 → 리뷰 → main 머지 (당일) ``` --- ## 전략 선택 가이드 | 기준 | Git Flow | Trunk-based | |---|---|---| | **팀 규모** | 대형 팀 | 소형~중형 팀 | | **릴리즈 주기** | 주기적 (2주~1달) | 수시 배포 | | **테스트 자동화** | 선택 | 필수 | | **복잡도** | 높음 | 낮음 | | **적합한 예** | 모바일 앱, 패키지 | SaaS, 웹서비스 | --- ## PR(Pull Request) 체크리스트 ```markdown ## 변경 사항 요약 - [ ] 무엇을 왜 변경했는지 설명 ## 테스트 - [ ] 단위 테스트 추가/수정 - [ ] 로컬 실행 확인 ## 코드 품질 - [ ] 불필요한 주석/로그 제거 - [ ] 변수명/함수명 명확성 - [ ] 엣지 케이스 처리 ## 배포 고려 - [ ] DB 마이그레이션 필요 여부 - [ ] 환경변수 추가 여부 ``` --- ## 커밋 메시지 컨벤션 (Conventional Commits) ``` feat: 새 기능 추가 fix: 버그 수정 docs: 문서 변경 style: 포매팅 (기능 변화 없음) refactor: 리팩터링 test: 테스트 추가/수정 chore: 빌드/도구 변경 예: feat(auth): JWT 토큰 갱신 로직 추가 fix(api): 노드 slug 중복 검사 누락 수정 docs(readme): 로컬 개발 환경 설정 업데이트 ```
// COMMENTS
Newest First
ON THIS PAGE