Git 브랜치를 어떻게 운용할 것인가에 관한 방법론에 대해서 보통 아래 3가지 전략이 언급된다.
이 글은 이 전략들 중 Git-Flow에 대한 설명이다.
Git-Flow 전략은 아래와 같은 5개 종류의 브랜치를 사용한다.
master
production에 배포하는데 사용하는 브랜치다.
develop
최초 브랜치 전략 도입시 master로부터 생성하고 개발한 기능(feature 브랜치)들을 모아두는 브랜치다.
feature
develop으부터 생성해서 개별 기능을 개발할 때 사용하고, 기능 개발이 완료되면 develop에 머지하는 임시 브랜치다.
당연히 동시에 여러 기능을 개발하면 여러개의 feature 브랜치가 생긴다.
따라서 해당 기능을 요약하는 영단어를 사용해 feature/socialLogin, feature-socialLogin 과 같은 형식으로 브랜치 이름을 정한다.
(슬래시를 사용하는 방식을 추천한다.)
release
develop에 개발된 기능들이 모이면(=feature 브랜치들이 develop에 머지되면) develop으로부터 생성해서 QA를 수행하고, QA가 종료되면 master에 머지해서 production에 개발한 기능을 반영하는 임시 브랜치다.
QA 과정에서 수정할 사항이 생기면 release에 직접 수정하고, 수정된 내용이 develop에도 반영되야하기 때문에 develop에도 머지해야한다.
release가 master에 머지될 때마다 production 버전이 하나씩 올라가게 된다. 따라서 master 머지 후 버전 tag를 붙여두는 것이 좋다.
(release가 master에 머지되면 즉시 production에 배포되야 하는 것이 원칙이다.)
develop으로부터 release를 언제 생성해야하는가 즉, 얼마만큼의 기능을 이번에 production에 반영할 것인가하는 문제는 서비스 운영 관점에서 판단하기 나름이다.
hotfix
production에 긴급 수정을 요하는 상황이 생긴 경우 master로부터 생성해서 코드 수정 후 master에 머지하는 임시 브랜치다.
수정된 내용이 develop에도 반영되야하기 때문에 develop에도 머지해야한다.
feature과 마찬가지로 수정 내용을 요약하는 영단어를 사용해 hotfix/loginErr, hotfix-loginErr과 같은 형식으로 브랜치 이름을 정한다.
(역시 슬래시를 사용하는 방식을 추천한다.)
임시 브랜치들은 사용 목적을 다하면(=머지가 완료되면) 삭제한다.
머지를 할 때는 커맨드 명령어를 사용한다면 --no-ff 옵션을 사용하고, 소스트리를 사용하다면 'fast-foward가 가능해도 새 커밋으로 생성' 옵션을 체크해서 머지 커밋을 남기는 것이 기록 추적과 관리에 용이하다.

위와 같은 Git-Flow 방법론을 반드시 똑같이 적용할 필요는 없다.
회사마다 팀마다의 상황과 니즈에 맞춰 Git-Flow 전략을 변형하여 사용하면 될 것이다.
PS.
틀린 내용이 있거나 보완할 점이 있다면 댓글 환영입니다.