GitFlow 모델
- 아래 브랜치를 활용하여 변경점을 관리한다.
- master
- develop
- feature
- release
- hotfix
master
- 실제 고객에게 릴리즈되는 브랜치
- 모든 변경사항은 결국 master로 최종 반영되어야 함.
develop
- 실제 개발의 중심이 되는 브랜치
- 모든 기능 추가, 버그 수정 후 고객에게 배포 가능한 수준이 되면 develop의 내용은 master에 최종 반영된다.
- 다음 배포할 기능 개발하는 브랜치
feature
- 기능을 개발하는 브랜치
- develop 브랜치로부터 분기되어 사용됨
- 기능 개발 완료 or 스프린트 주기가 종료되면 develop 브랜치로 내용 merge후 브랜치 삭제
release
- 배포를 준비(검증, 이슈 수정 등)하는 브랜치
- 배포 가능한 상태가 되면 master 브랜치로 병합
- release 브랜치에서 기능 점검 시 발견한 이슈에 대한 수정사항은 반드시 develop에도 merge 되어야한다.
- 배포 준비가 완료되면 최종 master로 merge하고 tag를 명시해야 함.
hotfix
- 배포한 버전에서 긴급 수정이 필요한 장애, 버그 발생 시 대응하는 브랜치
- hotfix는 master로부터 분기되며, 이슈가 수정되면 수정사항은 master, develop 브랜치에 최종 반영되어야 함.
Git flow 실습
1. GitBash에서 ~/gitflow_test 폴더 생성
$ mkdir ~/gitflow_test
cd ~/gitflow_test
2. GitFlow 브랜치 초기화
$ git flow init
3. GitFlow - 기능 개발
$ git flow feature start [개발할 기능명]
$ vi LoginService.java
$ git commit -m [커밋메시지]
- 기능 개발 완료 : 기능 개발이 되면 develop 브랜치로 반영이 되어야 한다.
$ git flow feature finish [기능명]
4. GitFlow - 릴리즈 시작
- 개발이 완료되면 release 브랜치를 분기해서 배포를 진행한다.
git flow release start [버전명]
- 릴리즈 종료(develop, master 브랜치에 반영시켜줌, master에는 태그 생성)
git flow release finish [버전명]
5. GitFolw - 긴급이슈 발생 시
- 긴급 수정 사항이 발생했을 때 hotfix 사용
$ git flow hotfix start [버전명 (1.2.1)]
- 긴급 이슈 해결(develop, master 브랜치에 반영시켜줌, master에는 태그 생성)
$ git flow hotfix finish 1.2.1