멋쟁이사자처럼 연합 프로젝트를 하면서 효율적인 협업을 위해 브랜치 전략을 도입하기로 했습니다. 다른 사람들과 공식적으로 협업하는 것은 처음이기에 브랜치 전략이 생소했습니다. 프로젝트 참여를 원활하고 효율적으로 하기위해 브랜치 전략이 무엇인지에 대해 알아보았습니다.
대표적인 전략
GitHub Flow는 GitHub에서 만든 간단한 브랜치 전략입니다. 이 방법은 Master 브랜치를 중심으로 운영되며, 기능 개발과 버그 수정 등 모든 작업을 동일한 단순한 구조로 다룹니다. 특히 수시로 배포가 이루어지는 프로젝트에서 매우 유용하게 활용됩니다.
기능 추가나 버그 수정을 위한 작업은 Master 브랜치로부터 새로운 브랜치를 생성하며, 이때 commit 메시지와 브랜치 이름을 정확하고 간결하게 작성해야 합니다. 모든 작업 브랜치는 Master로부터 분기됩니다.
기능 추가나 오류 수정이 완료되면 Pull Request(PR)을 보냅니다.
PR을 통해 팀원과 작성한 코드에 대한 리뷰와 논의를 합니다.
Vincent Driessen이 2010년에 제안한 Branch Model을 기반으로 만들어진 Git Flow는 현재 많은 기업에서 표준으로 사용되는 브랜치 전략입니다. Git Flow는 GitHub Flow와는 달리 크게 5개의 브랜치를 운영하여 코드를 관리합니다. 이 방식은 배포 주기가 길고 팀의 여력이 있는 경우에 적합합니다.
master : 제품으로 출시될 수 있는 브랜치
develop : 다음 출시 버전을 개발하는 브랜치
release : 이번 출시 버전을 준비하는 브랜치
hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치
feature : 기능을 개발하는 브랜치
--no-ff란?
- 브랜치 전략에서 merge를 할 때 사용하는 것을 권장한다.
- Fast-forward 관계에 있어도 Merge commit을 생성하여 해당 브랜치가 존재하였따는 정보를 남길 수 있다.
- commit기록을 되돌리기 편해진다.
--no-ff를 사용하지 않으면?
브랜치의 존재 여부를 몰라 어떤 commit부터 해당 기능을 구현했는지 확인하기 어렵다.
메인 브랜치들의 특징
보조 브랜치들의 특징
📜예시 설명
Master 브랜치에서 현재 15버전을 배포 중입니다.
1. Develop 브랜치에서는 15.5 버전의 기능을 개발 중입니다.
2. 다른 기능을 위해 Feature 브랜치를 생성하고 해당 기능을 개발합니다.
3. 다음 버전 개발 중에 현재 출시된 버전에 보안 문제가 발생하여 Hotfix 브랜치를 생성하고 보안 문제를 해결한 후 Master와 Develop으로 머지합니다.
4. 지속적으로 개발하여 15.5 버전의 기능들을 모두 개발하면 Develop 브랜치에서 개발이 완료되었다고 판단하여 Release 브랜치를 생성합니다.
5. Release 브랜치에서 QA와 베타 버전을 출시합니다. 만약 해당 브랜치에서 버그를 발견하면 해당 브랜치에서 버그를 수정합니다.
6. Release 브랜치에서 실제 사용자들에게 정식 배포할 준비가 되었다고 판단하면 Master에 배포하여 실제 사용자들에게 배포합니다. 동시에 Develop 브랜치에도 머지합니다.