이글은 Git은 뭐고, GitHub는 또 뭔가요?와 Git, GitHub 조금 더 알아보기를 읽고 보시는걸 추천 합니다.
Git Flow는 Git으로 개발 및 버전 관리할때 여러 브랜치를 효율적으로 관리하기 위해 사용하는
브랜치 관리 전략(Branch management strategy)입니다.
(간단히 말하면 '이렇게 사용하면 브랜치 관리 하기 편하더라' 해서 사용하는 브랜치 관리 방법론입니다.)
master branch
: 제품을 배포하는 브랜치 입니다.
develop branch
: 개발자들이 feature 브랜치에서 개발한 수 많은 단위 기능들이 병합되는 브랜치 입니다.
feature branch
: 단위 기능을 개발하는 브랜치입니다. 기능 구현이 완료되면 develop 브랜치에 merge 합니다.
release branch
: 제품 배포를 위해 master 브랜치로 보내기 전에 문제가 있는지 검사하고 각종 버그를 수정하는 브랜치 입니다. 버그를 수정한 후, master 브랜치로 merge 합니다.
hotfix branch
: release 브랜치에서 master 브랜치로 merge하고 제품 배포를 한후, 문제가 생겼을 떄 긴급 수정을 위해서 사용하는 브랜치 입니다.
master 브랜치에서 develop 브랜치를 만듭니다.
develop에서 feature 브랜치를 만들고, 제품에 필요한 단위 기능들을 개발합니다.
(예를 들어 회원가입 기능을 구현하기 위해서는 develop 브랜치에서 feature/signup 브랜치를 생성합니다.)
feature브랜치에서 단위기능을 구현하고, 유닛테스트를 거친후에 develop 브랜치에 merge 합니다.
모든 feature 브랜치에서 각각의 단위 기능 구현이 완료되어 develop 브랜치에 전부 merge했다면, release 브랜치를 만듭니다.
release 브랜치에서 QA(품질검사)를 하면서 문제가 없는지 검사하고, 버그를 수정합니다.
master 브랜치와 develop 브랜치에서 release 브랜치를 merge 합니다.
master 브랜치에서는 제품을 배포하고, develop 브랜치에서는 다음 버전 출시를 위한 개발을 진행합니다.
제품을 배포한 후, 미처 발견하지 못한 버그 또는 문제점들이 발생하면 hotfix 브랜치를 만들고 hotfix 브랜치에서 긴급 수정한 후 master 브랜치로 보내 수정 배포를 진행 합니다.
master 브랜치에서 수정 배포하고 난후 develop 브랜치에서 master 브랜치를 merge하고 다음 버전 출시를 위한 개발을 진행합니다.