Git-flow는 보다 효율적으로 팀 단위 협업을 하기 위한 브랜치 전략이다.
Git-flow는 표준안이 있긴 하지만, 팀 상황에 따라 적절하게 변형하여 사용하는 것이 좋다.
상황에 따른 변형도 표준안에 대한 기본적인 이해가 바탕이 되어야한다고 생각하기 때문에 이번 글에서는 표준적으로 Git-flow를 어떻게 사용하는지 알아보고자 한다.
아래는 Git-flow를 시각화한 이미지이다.
Git-flow 브랜치 종류
Git-flow를 구성하는 브랜치는 main, develop, feature, release, hotfix가 있다.
- main: 출시 중인 서비스 브랜치
- develop: 다음 출시될 다음 버전 서비스 브랜치
- feature: 다음 버전 서비스의 기능을 개발하는 브랜치
- release: 다음 버전 서비스의 출시 전 점검하는 브랜치
- hotfix: 출시 중인 서비스의 버그를 수정하는 브랜치
이 중 항상 유지되는 메인 브랜치는 main, develop 브랜치이다.
그리고 일정 기간만 유지되는 브랜치는 feature, release, hotfix 브랜치이다.
Git-flow 기본 흐름
main, develop 브랜치 생성
- 우선 원격 리포지토리를 생성한다. 이 원격 리포지토리는 upstream일 수도 있으며, fork한 origin일 수도 있다.
- main 브랜치를 생성한 뒤, main 브랜치로부터 develop 브랜치를 생성한다.
기능 개발
- 기능 개발이 필요할 경우, develop 브랜치로부터 feature 브랜치를 생성한다.
- feature 브랜치에서 기능 개발이 완료되면 develop 브랜치로 merge한다.
다음 버전의 개발 완료
- develop 브랜치에서 다음 버전의 기능 개발이 완료되었다.
- 다음 버전에 대한 QA를 진행하기 위해 develop 브랜치로부터 release 브랜치를 생성한다.
- release 브랜치에서 버그를 확인하고, 발견된 버그는 release 브랜치에서 수정한다.
- QA가 완료되면, release 브랜치를 develop, main 브랜치에 merge한다.
현재 버전의 버그 수정
- 현재 출시 중인 main 브랜치에서 버그가 확인된 경우, main 브랜치로부터 hotfix 브랜치를 생성한다.
- hotfix 브랜치에서 버그를 수정하고 develop, main 브랜치에 merge한다.