GitFlow의 5개 브랜치 전략 (by Vincent Driessen)
1. main: 최종 배포 버전을 관리.
2. develop: 개발 중인 기능들을 통합하는 브랜치.
3. feature: 신기능 개발을 위한 브랜치.
4. release: 배포 전 테스트를 위한 브랜치.
5. hotfix: 긴급 수정 브랜치.
신기능 개발 프로세스
develop 브랜치에서 feature 브랜치를 생성 후 기능 개발 진행.
개발이 완료되면 feature 브랜치를 develop에 병합.
배포 준비가 되면 release 브랜치를 생성하여 테스트 수행 후 develop 및 main 브랜치에 병합.
긴급 수정 프로세스
main 브랜치에서 hotfix 브랜치를 생성하여 수정 작업 진행.
수정 후 hotfix 브랜치를 develop 및 main 브랜치에 병합.
특징
장점 : 안정적인 버전 관리 및 배포 가능.
단점 : CI/CD 환경에서는 비효율적일 수 있음.
참고 : 반드시 release 브랜치를 사용할 필요는 없음.
2) 예시 상황
신기능 개발: 신규 로그인 기능을 추가해야 하는 경우, develop 브랜치에서 feature/login 브랜치를 생성하여 작업.
배포 준비: 로그인 기능 개발 완료 후, release 브랜치를 생성해 테스트 진행 후 develop 및 main 브랜치에 병합`
긴급 수정: 배포된 서비스에서 심각한 버그가 발견된 경우, main 브랜치에서 hotfix/bug-fix 브랜치를 생성하여 수정 후 main과 develop에 병합.
2. Trunk-based
1) 개념 설명
Trunk-based 전략
브랜치를 최소화하고 main 브랜치 중심으로 관리.
주요 방식
main 브랜치에서 feature 브랜치를 생성하여 기능 구현.
구현 완료 후 feature 브랜치를 main 브랜치에 병합.
사용자에게 main 브랜치에서 배포된 버전 제공.
특징
장점 : 코드가 한 곳(main 브랜치)에 모여 있어 관리가 용이.
단점 : 잦은 테스트와 빠른 피드백 필요.
2) 예시 상황
신기능 개발: 쇼핑몰에서 상품 리뷰 기능을 추가하는 경우, main 브랜치에서 feature/review 브랜치를 생성하여 작업.
배포: 리뷰 기능 개발이 완료되면 바로 main 브랜치에 병합하여 테스트 후 배포.
버그 수정: 배포된 서비스에서 오류가 발견되면, main 브랜치에서 직접 수정 후 바로 배포.