여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 사용하기 위해 효율적인 브랜치 관리를 돕고, 협업의 복잡성을 줄이며, 코드의 안정성을 유지하는 데 중요한 역할을 한다.
브랜치 생성에 규칙을 만들어서 협업을 유연하게 하는 방법론을 말한다.
신입 개발자로 회사에 입사해 실무를 들어가면
"어떤 브랜치가 최신 브랜치인지"
"배포 버전은 어떤 걸 골라야하지"
"완성된 작업물을 어디에 push 해야하지" 당황스러울 것입니다.
바로 이런 상황을 최소화하기 위해 만들어진 방법론이 git flow 브랜치 전략이다.
master(main): 배포 가능한 상태만을 관리하는 브랜치
develop: 다음에 배포할 것을 개발하는 브랜치
feature: 추가 기능을 개발하기 위한 브랜치
release: 다음 버전 출시를 준비하는 브랜치
hotfix: master 브랜치에서 발생한 버그를 수정하는 브랜치
실제 git 브랜치 전략의 흐름을 크게 3가지 경우로 정리하면 아래와 같다.
*5가지 중 항상 유지되는 메인 브랜치(2) : master(main), develop
(1). 새로운 기능을 구현하기 위해 Develop 브랜치로부터 Feature 브랜치를 생성한다.
(2). Feature 브랜치에서 기능을 개발한다.
(3). Feature 브랜치의 기능 구현이 완료되면 Develop 브랜치에 병합하기 위한 PR을 작성한다.
(1). Dvelop 브랜치에 Feature 브랜치가 병합되었다면, QA를 위해 Develop 브랜치로 부터 Release 브랜치를 생성한다.
(2). QA 테스트를 통과했다면 Release 브랜치를 Develop, master 브랜치에 병합한다.
(1). 만약 master 브랜치에서 버그가 발견된다면, master 브랜치에서 Hotfix 브랜치를 생성한다.
(2). 버그를 해결하고 Hotfix 브랜치를 Develop, master 브랜치에 병합한다.
(출처)
https://amaran-th.github.io/Github/[Github]%20Git%20%EB%B8%8C%EB%9E%9C%EC%B9%98%20%EC%A0%84%EB%9E%B5/
https://parkstate.tistory.com/33
https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-github-flow-git-flow-%F0%9F%93%88-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%A0%84%EB%9E%B5