본문 바로가기

카테고리 없음

Gitflow란?

GItflow란?

Gitflow는 Git workflow 전략으로 가장 대중적이고 인기 있는 방식입니다. Gitflow는 두 개의 메인 브랜치(Main, Develop)와 그 외 명확한 용도의 브랜치들(feature, hotfix, release)을 정의하고 그들이 어떻게 상호작용해야 하는지를 정해두어 소프트웨어 개발 사이클을 효율적으로 관리할 수 있도록 해줍니다. gitflow는 relase-based(릴리즈 일정이 정해져 있는) 소프트웨어 개발에 용이하지만, CI/CD에서는 다소 사용하기 어려울 수 있습니다. (최근에는 이러한 문제점을 해결한 trunk-based workflow 가 인기를 끌고 있다고 합니다.)

 

Develop과 Main 브랜치

Gitflow에서는 크게 두가지 기본이 되는 브랜치를 가집니다. 바로 Develop과, Main 브랜치입니다. Main 브랜치는 정식 릴리즈용 브랜치이며, develop 브랜치는 여러 피쳐들이 통합되는 브랜치입니다. Main 브랜치에 존재하는 모든 커밋에는 태그를 달아주는 것이 용이합니다.

 

Feature 브랜치

모든 피처는 각자의 브랜치에 존재해야 합니다. 피처 브랜치들은 develop 브랜치에서 가지를 쳐야 하며, 피처 개발이 완료되면 다시 develop 브랜치로 merge 되어야 합니다. 피처 브랜치는 절대 main 브랜치와 직접적으로 상호 작용하면 안 됩니다. 

Release 브랜치

develop 브랜치가 충분한 피처들을 모아서 배포할 준비가 되었다면, release 브랜치를 develop 브랜치에서 땁니다. 이 브랜치를 생성함으로써 다음 릴리즈 사이클이 시작됩니다. 즉, 새로운 피처들이 다시 develop 브랜치로 merge될 수 있습니다. 오직 버그, 문서 생성, 그리고 릴리즈 관련 작업들만 Release 브랜치로 들어갈 수 있습니다. 배포 준비가 완료되었다면, relase 브랜치는 main에 merge 되며 버전이 태그 됩니다. 또한, Release 브래치는 다시 develop 브랜치로 머지되어야 합니다.

 

Hotfix 브랜치

Hotfix 브랜치는 빠르게 수정해야 되는 게 있는 경우 사용합니다. Hotfix 브랜치는 main 브랜치를 기반으로 생성됩니다. 수정 작업이 끝나면 곧바로 main과 develop 브랜치(혹은 release 브랜치)로 merge 되어야 합니다. 그리고 main 브랜치는 새로운 버전으로 태그 됩니다. 

Hotfix 브랜치는 팀에서 다음 release 사이클에 방해가 되지 않으면서도 버그를 수정할 수 있도록 도와줍니다.