[Github/깃헙] 깃 브랜치 전략세우기 - Gitflow/Githubflow

2024. 8. 21. 21:20Github

Git 브랜치 전략
개발 과정에서 코드 관리를 체계적으로 하기 위해 여러 브랜치(branch)를 사용해
작업을 분리하고 병합하는 방법입니다.

그 중에서 Gitflow와 GitHub Flow는 널리 사용되는 두 가지 브랜치 전략입니다.

 

 

 

Gitflow (Git Flow)

Gitflow는 Vincent Driessen이 제안한 브랜치 전략으로, 대규모 프로젝트에서 효율적으로 개발 프로세스를 관리할 수 있도록 돕습니다. Gitflow는 여러 개의 브랜치를 사용해 기능 개발, 버그 수정, 릴리즈, 배포 등의 작업을 분리하여 진행합니다.


주요 브랜치

  • Main (또는 Master): 배포 가능한 상태의 코드를 관리하는 브랜치로, 최종적으로 사용자에게 전달될 코드를 담고 있습니다.
  • Develop: 새로운 기능을 개발하는 브랜치입니다. 각 기능(feature)은 develop 브랜치에서 파생된 별도의 브랜치에서 개발되며, 완료 후 다시 develop 브랜치에 병합됩니다.

보조 브랜치

  • Feature 브랜치: 특정 기능을 개발하는 데 사용되는 브랜치입니다. develop 브랜치에서 파생되어 기능이 완성되면 develop 브랜치로 병합됩니다.
  • Release 브랜치: 배포를 준비하는 브랜치입니다. develop 브랜치에서 파생되며, 여기서 버그 수정 및 최종 조정을 거친 후 main과 develop 브랜치로 병합됩니다.
  • Hotfix 브랜치: 프로덕션에서 발생한 긴급한 버그를 수정하는 브랜치입니다. main 브랜치에서 파생되어 버그 수정 후 main과 develop 브랜치로 병합됩니다.

Gitflow의 장점

  • 체계적인 브랜치 관리로 대규모 프로젝트에 적합
  • 릴리즈, 핫픽스 등의 작업을 명확히 분리하여 진행할 수 있음

Gitflow의 단점

  • 브랜치가 많아 관리가 복잡해질 수 있음
  • 소규모 프로젝트나 CI/CD(Continuous Integration/Continuous Deployment)를 중시하는 환경에서는 오히려 비효율적일 수 있음

GitHub Flow

GitHub Flow는 GitHub에서 제안한 보다 단순한 브랜치 전략입니다. 이 전략은 특히 CI/CD 환경에서 빠르고 효율적으로 작업을 진행하는 데 중점을 둡니다.


GitHub Flow의 기본 원칙

  • Main (또는 Master) 브랜치: 항상 배포 가능한 상태의 코드를 유지합니다.
  • Feature 브랜치: 새로운 기능이나 버그 수정을 위해 main 브랜치에서 파생된 브랜치입니다. 작업이 완료되면 Pull Request(PR)를 통해 코드 리뷰를 거치고, main 브랜치에 병합됩니다.
  • PR 기반의 워크플로우: 기능 브랜치는 언제든지 PR을 통해 병합을 요청할 수 있으며, 코드 리뷰와 테스트를 거쳐 main 브랜치로 병합됩니다. 병합이 완료되면 곧바로 배포가 이루어질 수 있습니다.

GitHub Flow의 장점

  • 간단하고 직관적인 브랜치 관리
  • 빠른 배포와 지속적인 통합에 최적화되어 있음
  • 적은 수의 브랜치로 효율적인 작업 가능

GitHub Flow의 단점

  • 대규모 프로젝트나 복잡한 릴리즈 관리가 필요한 환경에서는 다소 제한적일 수 있음
  • 안정적인 버전을 유지하기 위한 별도의 브랜치가 없기 때문에, 큰 릴리즈 준비 시 복잡해질 수 있음


Gitflow는 복잡하고 대규모의 프로젝트에 적합하며,
명확한 브랜치 관리와 릴리즈 프로세스를 필요로 하는 경우에 유용합니다.

GitHub Flow는 간단하고 빠른 배포가 중요한 프로젝트에 적합하며,
CI/CD를 활용하는 환경에서 효율적으로 사용할 수 있습니다.

프로젝트의 성격, 규모, 팀의 협업 방식 등에 따라 적합한 브랜치 전략을 선택하는 것이 중요합니다.