Workflow: Git flow, Github flow, Gitlab Flow
[Workflow: Git flow, Github flow, Gitlab flow]
오늘은 Git을 다루는 Workflow인 Git flow, Github flow, Gitlab flow에 대해서 공부해보았습니다.
Git flow, GitHub flow, GitLab flow와 Git을 다루는 Workflow: Gitflow, Github flow, Gitlab flow를 참고했습니다.
1. Git flow
특징
- 가장 최초로 제안된, 가장 유명한 워크플로우로 브랜치 전략이 다른 워크플로우보다 엄격하다.
- 대규모의 프로젝트를 관리하는데 적합하다.
- 계획적인 릴리즈 계획을 가지는 프로젝트에 유용하다.
브랜치 전략
- master : 제품으로 출시될 수 있는 브랜치이다.
- develop : 다음 출시 버전을 개발하는 브랜치이다.
- feature : develop에서 파생하며, 한 기능 단위를 개발하는 브랜치이다.
- release : develop에서 파생되는 브랜치, 이번 출시 버전을 준비하는 브랜치로 코드에 이상이 없다면 master로 병합된다.
- hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치, Master에서 파생되며, 버그 수정이 완료되면 master와 develop에 병합된다.
Gitflow의 방식이 대다수의 소프트웨어 개발 프로젝트에는 불필요한 절차를 준수하도록 해, 생산성을 떨어뜨린다는 비판이 일기도 했으며, 이러한 불만의 목소리를 등에 업고 제시된 방식이 Github flow와 Gitlab flow이다.
2. Github flow
특징
-
브랜치 전략이 단순하다.
-
master
브랜치에대한 role만 정확하다면 나머지 브랜치들에는 관여를 하지 않는다. 그리고 pull request를 사용하도록 권장한다. -
수시로 배포가 일어나며, CI와 배포가 자동화되어있는 프로젝트에 유용하다.
브랜치 전략
master
브랜치는 어떤 때든 배포가 가능하다. 항상 최신의 상태이며 stable한 상태로 Product에 배포된다.- 새로운 작업을 시작하기 위해
master
에서 브랜치를 딴다면 이름은 어떤 일을 하는지 명확하게 작성한다. - 원격지 브랜치로 수시로 push한다. git flow와 상반되는 방식으로 항상 원격지에 자신이 하고 있는 일들을 올려 다른 사람들도 확인할 수 있도록 해준다.
- merge를 할때는 pull request를 생성하여 코드리뷰를 한다.
- 코드리뷰가 끝나면 master 브랜치로 병합한다.
- master로 병합되었을 때는 즉시 배포되어야 한다.
3. Gitlab flow
특징
- 너무 단순해진 Github flow에 보완하는 내용을 가미하여 제안된 방식이다.
-
production
브랜치가 존재하여 커밋한 내용들을 일방적으로 디플로이를 하는 형태이다. master
와production
사이에pre-production
을 두어 개발한 내용을 곧장 반영하지 않고 시간을 두고 반영한다.
Comments