본문 바로가기

Project/Project_OurWorldCup

[Project: OurWorldCup] branch 전략 분석 및 선택

반응형

도입

프로젝트를 진행할 때 적절한 브랜치 전략이 필요합니다. 유명한 전략으로 git-flow, gitlab-flow, github-flow이 있습니다.

각각에 대해 간단히 살펴본 후 저에게 맞는 브랜치 전략을 선정하기로 했습니다. https://wiki.yowu.dev/ko/dev/Git/about-git-github-gitlab-flow 블로그에서 이해에 도움을 많이 받았습니다. 아래에 나오는 모든 예시 사진은 이 블로그에서 가져온 그림입니다.

git-flow

git-flow는 가장 많은 기능을 포함한 브랜치 전략입니다.

  • 완전히 안전한 코드의 main 브랜치
  • 긴급한 수정을 위한 hotfix 브랜치
  • 개발을 위한 develop 브랜치
  • 세부적인 기능을 개발하는 데 사용되는 feature 브랜치
  • 개발 후 품질 보증(QA, Quality Assuarance)를 위한 release 브랜치

git-flow는 이렇게 명확한 브랜치 구조를 가져서 현재 상황을 쉽게 파악할 수 있고, 안정성과 복구, 관리와 제어에 용이합니다. 하지만 그러다보니 개발 속도가 느려지고 작은 변경에 대한 수정도 오래 걸립니다. 또한 브랜치가 많다보니, 병합에 의한 충돌의 가능성이 높아져 CI/CD에 적합하지 않습니다.

gitlab-flow

gitlab-flowgit-flow보단 가볍고, github-flow보단 무거운 브랜치 전략입니다.

  • 안정적인 코드가 저장되는 main 브랜치
  • 기능이 개발되는 feature 브랜치
  • 다양한 환경에 맞는 코드를 관리하는 environment 브랜치, 여기에는 development, staging, production 환경에 대한 브랜치가 있을 수 있습니다.

gitlab-flow는 GitLab에서 제공하는 기능들과 밀접하게 연관되어 있습니다. 또한 다양한 환경에서의 배포와 관리를 중시합니다. 하지만 이번 프로젝트는 개인 프로젝트로, 다양한 환경을 고려하진 않습니다.

github-flow

github-flow는 가장 가벼운 브랜치 전략입니다.

  • 안전한 코드가 있는 main 브랜치
  • 기능을 개발하는 feature 브랜치
    이때 배포는 main 브랜치에 병합된 코드를 즉시 배포합니다. 매우 단순한 브랜치 전략으로, CI/CD가 신속하게 이루어집니다. 프로젝트가 복잡해지거나, 여러 개발자가 협업하다 보면 브랜치 관리에 어려움을 가질 수 있습니다.

 

선정

저는 개인 프로젝트로 진행하기에 단순하며, 빠르게 개발 가능한 github-flow를 따르기로 했습니다. 하지만 docs를 지속적으로 정리하고 관리하고 싶어, docs 브랜치를 따로 생성하여 지속적으로 사용하려 합니다.

 

* 이후 개발하면서 git-flow로 변경하게 되었습니다. https://dbwp031.tistory.com/78

반응형