[Git] Git Flow 브랜치 전략

2024. 1. 15. 00:25개발/프론트엔드 개념

Git Flow란?

main 또는 master 브랜치와 development 브랜치를 유지하면서, 용도에 따라 임시적으로 feature, release, hotfix 브랜치를 생성해서 사용하는 방식의 전략이다. 브랜치 별로 약속된 역할에 맞게 생성해서 사용하는데 각 브랜치를 통해 규칙에 맞는 흐름 flow 대로 작업이 이루어지는 것을 지향한다.

기준이 되는 master, develop 브랜치를 먼저 설명하겠다.

  • master: 정식 배포의 기준이 되는 브랜치로, 항상 안정적인 제품이 서비스 될 수 있는 소스코드로 언제나 배포 가능한 상태로 유지되어야 하는 브랜치이다.
  • develop: 개발 중인 코드를 관리하는 브랜치이다. 새로운 기능 개발과 개발된 변화를 담은 버전 배포작업이 시작될 수 있는 브랜치이다.

develop에서 진행하던 작업을 새 버전 배포되는 시점에는 master 브랜치와 동일한 상태가 된다. 여기서 develop 브랜치에서 기능 개발과 릴리즈(배포)를 준비하는데 이런 경우 feature, release 브랜치를 develop 브랜치로부터 분기해서 작업을 한다. 

  • feature: 개발할 기능을 위한 브랜치로 기능 개발이 완료되면 그 변화가 develop 브랜치로 병합하고, feature 브랜치는 제거된다.
  • release: 배포를 위한 브랜치로 배포 전 마무리 작업과 버그 수정이 이루어진다. 완료되면 master와 develop 브랜치로 병합된다. 릴리즈가 끝나면 제거된다.

추가적으로 master 브랜치에 긴급한 수정이 필요할 때는, hotfix 브랜치를 활용하여 빠르게 배포하기도 한다.

  • hotfix: 긴급한 버그 수정을 위한 브랜치로 master 브랜치에서 발생한 버그를 고치고 master 브랜치와 develop 브랜치를 병합한다. master 브랜치를 기준으로 생성하기 때문에 빠르게 master에 병합해서 버그에 대응할 수 있다.

Git Flow는 안정적인 코드 배포를 위한 강력한 전략이지만, 프로젝트가 작을 때는 비효율적일 수 있다. 배포 주기가 긴 대형 서비스이면서, 서비스의 안정성이 강조되는 경우에 사용하면 유용하다.

장점

  1. 안정적인 배포를 위한 구조가 갖춰져 있다.
  2. 긴 개발 주기에 적합하며, 복잡한 기능 개발과 버그 수정에 유용하다.
  3. 배포 전 마무리 작업과 테스트를 위한 release 브랜치를 사용할 수 있다.

단점

  1. 브랜치가 많아지고 관리해야 할 작업이 증가할 수 있다.
  2. 작은 규모의 프로젝트에서는 비효율적일 수 있다.