5개 브랜치 모델
git-flow
feature 브랜치 사용
release 브랜치 사용
hotfix 브랜치 사용
5개 브랜치 모델
Vincent Driessen이 제안한 5개의 브랜치 모델을 사용하여 브랜치 관리
- master(main)
- 정식 배포되는 안정적인 버전의 소스코드 관리
- master 브랜치의 HEAD는 최신 배포판 버전을 가르킨다.
- 지난 배포 버전을 위해 태그(tag)들이 추가되어 있고, 이 태그를 이용해 각 릴리즈 버전의 소스코드를 빠르게 확인할 수 있다.
- develop
- 버그 수정을 위한 코드, 새로운 기능을 추가하기 위한 코드, 성능을 개선하기 위한 코드들이 검증이 완료되면 PR 요청을 통해 develop 브랜치에 병합된다.
- 개발자는 feature 브랜치에서 소스코드을 수정한 다음 develop 브랜치로 PR 요청을하고 검증 이후에 최종적으로 develop 브랜치에 병합한다.
- feature
- 새로운 기능을 위한 feature 브랜치는 develop 브랜치의 HEAD에서 생성된다.
- 새로운 기능, 버그 수정을 위한 코드 수정을 하는 브랜치
- 혼자 작업을 할 수도 있고, 여러명이 공동으로 작업할 수도 있다.
- release
- git으로 관리되는 소프트웨어는 정기적으로 성능 개선, 기능 추가, 버그 수정을 반영하면서 release를 하기 위한 목적으로 생성하는 브랜치
- release 브랜치는 develop 브랜치를 기반으로 생성되며, 다음 릴리즈에 포함되어야 하는 기능과 버스픽스들이 확정된 다음 생성된다.
- release 브랜치가 생성된 다음 QA 테스트가 해당 브랜치를 기준으로 진행된다. 이 과정에서 발견된 버그 수정 사항들은 release 브랜치과 develop 브랜치에 적용되며 그밖의 기능들은 중간에 추가되지 않는다.
- QA테스트 이후 릴리즈 브랜티의 코드가 안정적이라고 판단되면, master 브랜치에 병합되고 릴리즈에 해당하는 태그가 생성된다.
- release 브랜치가 생성된 이후 반영된 수정사항들은 develop 브랜치에도 적용된다.
- hotfix
- 정기적인 릴리즈 이외에 긴급하게 수행되어야 할 버스 수정을 반영하기 위해 생성되는 브랜치이다.
- 릴리즈 프로세스를 기다릴 수 없을 정도로 긴급한 수정이 바로 반영되어야 하는 경우 해당 브랜치를 생성한다.
- master 브랜치를 기반으로 생성하여 긴급한 수정 사항을 반영한다. 이후 master 브랜치와 병합되고 태그를 생성한다.
- 수정 사항은 develop 브랜치로도 병합되어 긴급 수정 사항이 이후 릴리즈에도 적용될 수 있도록 한다.
git-flow
정의
위의 5가지 브랜치 모델을 쉽게 사용할 수 있도록 몇 개의 CLI명령문으로 구현해 놓은 git의 확장 프로그램이다. 간단한 명령문을 통해서 브랜치 모델에서 필요한 브랜칭 동작을 수행할 수 있다.
설치[For mac]
brew install git
echo “export PATH=/usr/local/bin:$PATH” >> ~/.bash_profile
brew install git-flow-avh
시작 설정
- git 저장소를 git-flow에 맞게 초기화 진행
어떤 브랜치를 어떤 용도로 사용할 것인지 등을 명시
git flow init
or git flow init -d
← default branch name