git flow란?

  • Git을 이용한 소프트웨어 개발 프로세스에서 브랜치 관리 전략 중 하나이다.
  • 5가지의 주요 브랜치를 구분하여 프로젝트를 진행한다.
  • 각 브랜치는 목적이 정해져있기 때문에 목적에 맞는 상태를 유지하면서 프로젝트가 진행된다.

브랜치 종류

  • Main
    • 배포 가능한 안정된 코드
  • Develop
    • 개발 코드의 기본 브랜치
  • Feature
    • 기능 개발을 위한 실험적인 브랜치
  • Release
    • 배포 준비하는 브랜치
    • Develop에서 분기되고 준비가 끝나면 Main에 병합되고 버전 태깅한다.
  • Hotfix
    • Main에서 발견된 긴급한 버그 수정을 위한 브랜치
    • 처음 기능 추가할 때처럼 Develop, Feature 브랜치를 돌면서 작업하면 늦다.
    • Main에서 바로 분기되고 수정 사항은 Develop, Main에 바로 적용한다.

git flow 장단점

  • 장점
    • 개발, 배포, 유지보수 작업을 체계적으로 구분한다.
    • 버전 관리와 배포가 용이하다.
    • 긴급한 버그 대응이 가능하다.
    • 역할이 명확히 구분되어있어 대규모 협업에 용이하다.
  • 단점
    • 복잡성 : 소규모 프로젝트(빠른 개발환경)에서는 오히려 복잡하다.
    • 학습 곡선 : 처음 접하는 개발자는 규칙을 배우고 적용하는데 시간이 필요하다.
    • 유연성 부족 : 역할이 명확하기 때문에 유연성은 부족하다.

다른 git 전략들

  • Github Flow
    • 단순성
    • 기능이나 버그 수정 브랜치를 생성하고 PR을 통해 리뷰 후 main에 병합
    • main은 배포 가능한 상태 유지
    • 소규모, 빠른 개발 주기에 적합
  • Gitlab Flow
    • 환경 기반 브랜치 : 개발, 스테이징, 프로덕션
    • 보호된 브랜치 : 특정 사용자만 변경
    • 유연성 : Github flow와 Git flow의 중간 정도
  • Feature Branch Workflow
    • 기능 중심 : 기능이나 수정 사항별로 브랜치 생성
    • 병합 전략 : main에 병합 전 코드 리뷰
    • 다양한 프로젝트 적용 가능
  • Trunk Based Development(TBD)
    • 단일 개발 라인 : trunk 브랜치에서 짧은 사이클로 개발과 병합 진행
    • Feature Toggles : 기능 온오프 코드를 포함시켜서 미완성 상태일 때는 오프를 완성되면 온으로 변경하여 기능 추가가 이뤄진다.
    • 지속적인 통합 : 모든 개발자가 주 브랜치에서 작업하면서 병합을 하기 때문에 충돌 최소화

참고 자료

https://sungjk.github.io/2023/02/20/branch-strategy.html

https://nvie.com/posts/a-successful-git-branching-model/

profile
문제를 컴퓨터로 해결하는 데서 즐거움을 찾는 프론트엔드 개발자

0개의 댓글

관련 채용 정보