Git Flow는 Vincent Driessen에 의해 처음 제안된 Git 브랜치 관리 전략으로, 효율적으로 소스 코드를 관리하고 여러 개발자가 함께 작업하는 환경에서 발생할 수 있는 문제를 최소화하는 데 도움이 됩니다. 기본적으로 Git Flow는 다음 두 가지 주요 브랜치를 항상 유지합니다:
- master: 배포 가능한 상태의 코드가 모여 있는 브랜치입니다. 이 브랜치에는 실제 운영 환경에 배포된 커밋만 포함됩니다.
- develop: 다음 배포를 위한 개발이 이루어지는 브랜치입니다. 모든 기능이 이 브랜치에서 통합되고, 최종적으로 release 브랜치로 준비됩니다.
주요 브랜치
Git Flow에서는 주로 다섯 가지 종류의 브랜치로 구성됩니다.
- master: 안정적인 코드가 저장되어 있는 브랜치로, 배포가 가능한 상태의 코드만 포함됩니다.
- develop: 신규 기능의 개발과 개선 작업이 이루어지는 브랜치로, master에서 분기하여 유지됩니다. 모든 기능 개발이 완료되면 master로 병합됩니다.
- feature: 특정 기능을 개발하기 위한 브랜치입니다. 개발자는 기능별로 feature 브랜치를 만들고, 개발이 완료되면 이를 develop 브랜치로 병합합니다. 브랜치 명명 규칙은 보통
feature/기능명형식을 따릅니다. - release: 배포를 위한 준비가 완료된 코드가 있는 브랜치입니다. develop으로부터 파생되어 QA와 버그 수정을 위해 사용됩니다. 문제가 발생하지 않으면 master와 develop 브랜치로 병합됩니다.
- hotfix: 운영 중인 버전에서 발생한 문제를 긴급하게 수정하기 위한 브랜치입니다. master에서 분기되어 문제를 수정하고, 수정된 내용을 master와 develop에 병합합니다.
Git Flow의 장점
- 명확한 규칙: 각 브랜치의 용도와 기능이 명확하므로, 여러 개발자가 동시에 작업할 때 충돌 가능성을 줄일 수 있습니다.
- 안정성: master 브랜치에는 항상 안정적인 코드가 유지되므로, 배포가 쉽고 안전합니다.
- 작업 효율성: 기능별로 작업할 수 있어 작업이 분리되고, 팀원 간의 의사소통이 원활해집니다.
- 디테일한 버전 관리: 각 릴리스에 대한 버전 관리가 체계적으로 이루어집니다. 태그를 통해 명확하게 버전을 관리할 수 있습니다.
Git Flow 사용 시 유의사항
Git Flow는 일정한 리듬으로 개발 및 배포가 이루어지는 환경에 적합합니다. 그러나 이러한 복잡한 구조때문에 작은 팀에서는 관리가 어렵고, 지나치게 많은 브랜치로 인해 복잡성을 증가시킬 수도 있습니다. 따라서 팀의 규모와 개발 형태에 맞추어 전략을 조정할 필요가 있습니다.
이러한 점에서 Git Flow는 소규모의 애자일 팀보다는 중대형 팀과 프로젝트에 더 적합한 전략으로 평가받고 있습니다.
각 브랜치의 역할에 대해 좀 더 상세히 보강할 수 있습니다.
feature 브랜치는 일반적으로 GitHub 이슈 번호와 연결하여 명명하며, 개발자들은 각 기능의 개발 진행 상황을 쉽게 추적할 수 있게 됩니다. 보통 feature/#issue-번호 형식으로 명명됩니다.
release 브랜치는 QA 과정에서 발견된 버그나 문제를 해결하기 위한 작업이 수행됩니다. 이 브랜치는 최종적으로 master 브랜치에 병합되며, 릴리즈 태그가 추가됩니다. 이 릴리즈 태그는 주로 v1.0, v2.0 등 형식을 따릅니다.
hotfix 브랜치는 배포된 버전에서 발생한 긴급한 결함을 수정하기 위해 사용되며, 이러한 브랜치에서 수정된 내용도 develop 브랜치에 반영되어야 하므로, 이 과정이 반복되는 구조를 가져야 합니다.
Git Flow는 Agile 개발 방법론과도 잘 어우러지는 점이 있으나, 그에 비해 보다 엄격하고 명확한 규칙으로 인해 발생할 수 있는 복잡성을 관리할 수 있습니다. 팀의 요구 사항과 프로젝트의 특성에 따라 Git Flow를 포함한 다양한 브랜치 전략을 조합하여, 유연성과 효율성을 확보하는 것이 중요합니다
Leave a Reply