git flow 는 git을 쓰는 프로세스이다. 자세히 말하자면 브랜칭 모델을 위한 고수준 저장소 작업을 제공하는 git 의 확장이다.

본인의 이전 프로젝트들에서는 브런치란 작업의 기준, 배포의 대상이되는 Master브런치, 실직적인 코딩을하고 검증을 통해 Master에 merge되기 위해 기능단위로 나뉘어지는 feature브런치가 있었다 하지만 git flow에서는 이 브런치들을 좀더 세분화해 프로세스의 정밀성, 안정성, 효율등을 높일수있다.

먼저 git flow를 설치하기위해서는 제대로 동작하는 git이 설치되어있어야한다. (macOS,Linux,Windows)

MacOs

Homebrew

$ brew install git-flow-avh

MacPorts

$ port install git-flow-avh

Linux

$ apt-get install git-flow

Windows (Cygwin)

$ wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow
-
avh/develop/contrib/gitflow-installer.sh install stable | bash

git flow에는 총 5가지의 브런치가 있다

feature

feature브런치는 기존의 역할과 같다. 개인작업을 외부의 영향을 받지않고할수있다. 개발을할때 기능단위로 나뉘어서 쓰인다. 이브런치들은 develop브런치에 merge된다.

develop

이전의 Master브런치의 역할을 하는 브런치이다. 기능브런치들의 기준이 되는 브런치다. 그러므로 기능을새로 개발할때, 즉 새로운 feature브런치를 생성할때 이 develop브런치에서 생성하면된다. master에서 배포가 이미 진행되어도 계속해서 기능개선과 유지보수가 이루어 지는 브런치이기때문에 가장 긴 브런치라고 할수도있다.

release

develop브런치에서 버전이 완성이되면, 배포가되는 master브런치에 가기전에 배포가 잘되는지, 합쳐졌을때의 버그는없는지 확인, 테스트가 진행되는 브런치이다. ui테스트, end to end 등의 최종 테스트가 진행된다.

master

release에서 테스트가 끝나면 드디어 배포가되는 브런치이다. 가장검증이되고, 가장깨끗한 버전이다

hotfix

master에서 서비스가 배포되고있고 유저들이 사용중인데 버그가 발견되어서 긴급하게 수정이 진행되어야할때 사용되는 브런치이다 이같은경우는 바로 마스터에서 브런치를생성해 바로 마스터와 develop으로 merge를시킨다

디벨롭에서 피쳐까고코딩하고
리베이스스쿼시하고 디벨롭으로
보내고 그리고 릴리즈까고 테스트
, 잘되면 이제 마스터로보내서
마스터를 배포함
나중에 버그가발견되면 
마스터에서 핫픽스를까서
고치고 마스터와 디벨롭으로 머지
머지할때는 항상 리베이스,스콰시

배포중버그가 발견되면 
보통 핫픽스로 고치나,
버그가 너무심각하고 치명적이면 
마스터브런치 전 버전, 
전 커밋으로 돌려보냄