협업 해야 할 일들이 점점 생겨나면서 Git flow정도는 기본적으로 알아 둬야 차질 없이 개발 할 수있을 거 같은 느낌을 받았다. Git으로 협업 하는 것이 왜 좋은지 Git Flow에 대한 개념이 뭔지 알아보자.
git-flow는 Vincent Driessen의 branching model을 적용하여 저장소를 관리 해주도록 하는 확장된 방법론을 의미한다.
Branch는 feature - develop - release - hofixes - master로 나누어 코드를 관리하는 전략을 말한다.
master (main)
사용자에게 배포 되고, 기준이 되는 브랜치를 의미한다. master 브랜치의 HEAD에는 소프트웨어의 최신 배포판의 소스코드 버전이 들어있다. 배포 해도 될 만큼 안정성있는 코드들만 병합 되는 브랜치이다.
develop
develop 브랜치는 개발 브랜치로 각자 개발한 소스 코드들을 추가하는 곳이다. 버그를 수정하기위한 코드, 성능을 개선하기위한 코드들 또한 이 브랜치로 추가된다. 각 코드들은 PR(Pull Request) 요청을 거쳐 이곳으로 병합된다.
feature
feature 브랜치는 단위 기능을 개발하는 브랜치이다. PR을 거쳐 develop 브랜치로 병합된다.
release
배포를 위해 master 브랜치로 보내기전 마지막으로 QA 테스트를 하는 브랜치이다. 이 과정에서 발견된 버그 수정 사항이 release 브랜치와 develop 브랜치에 적용된다. 테스트 후 코드가 안정적이라고 판단 되면 master 브랜치에 병합한다.
hotfix
release 브랜치를 거쳐 master 브랜치로 배포 했는데 버그가 생겨 긴급하게 패치 해야 할 때 사용하는 브랜치이다. 따라서 hotfix 브랜치는 master 브랜치를 기반으로 생성된다.
레퍼런스