Git Flow는 Git으로 형상관리를 할때 브랜치를 효율적으로 관리하기 위해 사용하는 브랜치 관리 전략이다. Vincent Driessen이라는 사람에 의해 널리 퍼지기 시작했고 현재는 Git으로 개발할 때 거의 표준과 같이 사용되는 방법론이다.
Git flow는 효율적인 협업을 위해 생겨난 전략으로써 프로젝트의 규모가 클수록 유용하다.
Git flow는 아래 그림처럼 5가지의 유형이 있다.
master : 제품으로 출시될 수 있는 브랜치
develop : 다음 출시 버전을 개발하는 브랜치
feature : 기능을 개발하는 브랜치
release : 이번 출시 버전을 준비하는 브랜치
hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
Git flow를 검색해보면 대부분 블로그에 아래 이미지들이 포함되어 있습니다.
A는 게시판에 필터기능을 추가하고, B는 게시글에 댓글기능을 추가해야한다.
develop 브랜치에서 A와 B가 각각 feature 브랜치를 생성한다.
개발이 완료되면 그동안 commit된 내용을 local branch에서 feature 브랜치로 pull 또는 pull request한다.
feature 브랜치에서 develop 브랜치로 merge 요청한다.
relase 브랜치에서 QA를 진행하기 위해 merge를 진행한다.
QA 테스트가 통과되었다면 master, develop에 merge를 진행한다.
운영서버에서 버그가 발생했다.
master브랜치에서 바로 hotfix 브랜치를 생성한다.
버그를 열심히 수정하고 master 브랜치에 merge를 진행하고 추가적으로 버그가 발생하지 않도록 develop에도 merge를 진행한다.