Workflow 선택, 그 선택이 모든 걸 결정
'Workflow' 는 부드럽게 들리지만 branch 수명, release 주기, conflict 빈도, CI 구조까지 결정. 패턴 셋이 지배적이고 각자 다른 팀에 맞아. 실수: 섞기 — 절반은 GitFlow 인 척, 절반은 trunk-based 인 척, main 에 양립 불가 두 모양으로 commit 도착. 하나 골라, 문서화, 플랫폼 설정으로 강제.
GitHub Flow 가 가장 단순: main 은 항상 배포 가능, 모든 변경은 main 분기 짧은 feature branch 에서, PR 열기, 리뷰, merge 또는 rebase 로 land, 배포. 장기 develop / release branch 없음. 연속 배포 팀 (대부분 modern web/SaaS) 이 사용 — branch → PR → merge → 배포 사이클이 시간 단위. 암묵적 제약: 진짜 CI/CD 작동해야 함, 아니면 'main 배포 가능' 은 거짓.
Trunk-Based Development 가 더 나아가: 대부분 엔지니어가 main 에 직접 commit (또는 시간 단위 PR), feature branch 드물고, 미완성 기능은 feature flag 뒤에. 하루 여러 번 release. 매우 빠른 피드백 최적화 팀 (Google, Spotify 규모) 사용. 강한 feature flag, 포괄적 test, 'broken main 모두 막음 — 수분 내 수정' 의 문화적 commitment 필요.
GitFlow 가 가장 무거움: main 은 production only, develop 이 통합 branch, feature branch 는 develop 에서, release branch 가 main 의 tagged release 전 안정화, hotfix branch 는 main 에서 바로 + 둘 다로 merge. Versioned product (데스크톱 앱, semver 있는 라이브러리, 규제 소프트웨어) ship 하는 팀 사용. 복잡성이 reproducible release line 대신 overhead — 연속 배포엔 안 맞아.