Muscardinus
Git flow / Github flow / Gitlab flow 본문
소프트웨어의 소스코드를 관리하고 출시하기 위한 "브랜치 관리 전략"에 대해서 알아보자
Git flow
사용하는 브랜치의 종류는 5가지이다.
Master(Main) - 제품으로 출시되는 Branch
Develop - 다음 출시 버전을 개발하는 Branch
Feature - 기능을 개발하는 Branch
Release - 이번 출시 버전을 주닙하는 Branch
Hotfix - 출시 버전에서 발생한 버그를 수정하는 Branch
- 처음에 Master(Main)와 Develop 생성
- 새로운 추가 작업은 Develop에서 Feature Branch 생성
- Feature는 Develop으로 Merge
- QA를 위해서 Develop에서 Release Branch 생성
- QA에서 발생한 버그는 Release에서 수정
- QA가 끝나면 Release에서 Develop / Master(Main)으로 각각 Merge
- Hotfix는 Master에서 시작하여 수정 후 Master / Develop에 Merge
Github flow
Git flow를 조금 더 간소화 시킨 방식으로 Github에 최적화 된 방식을 추구한다. 또한 자동화의 개념이 들어가 있다는 점이 특징이다.
Master(Main) Brnach에 대한 role만 정확하다면 나머지 Branch들에는 관여를 하지 않는다. 그리고 Pull Request 기능의 사용을 권장한다.
특징
- Release Branch가 명확하지 않은 시스템에서 사용에 맞게 되어있다.
- Master(Main) Branch는 항상 최신 상태이며, stable tkdxofh Product에 배포되는 Branch이다.
- 새로운 일을 시작하기 위해 Branch를 Master(Main)에서 딴다면 이름은 어떤 작업인지 명확하게 명시한다.
- 피드백이나 도움이 필요할 때, PR을 생성하여 공유한다.
Gitlab flow
Github flow가 너무 간소화되어 있어서, 배포, 환경 구성, 릴리즈, 통합에 대한 이슈가 있어 이것을 보완하기 위해서 생겼다.
Master Branch 이외에 Production Branch가 종재하여 커밋한 내용들을 일방적으로 Deploy하는 형태이다.