Git Branch 전략

박인정(Jay)·2024년 11월 28일


Git Flow

주요 브랜치

  • master : 제품 출시 브랜치
  • develop : 개발 브랜치
  • feature : 기능 개발 브랜치
  • release : 출시 준비 브랜치
  • hotfix : 긴급 버그 수정 브랜치

장점

  1. 체계적인 버전 관리

  2. 대규모 프로젝트에 적합

  3. 안정적인 배포 관리

  4. 팀 규모가 작은팀인 경우 GitHub Flow나 Trunk-Based Development가 적합

    • 큰 팀 : Git Flow와 같은 구조화된 전략이 효과적

팀 성숙도

  • 성숙한 팀 : Git Flow와 같은 복잡한 전략 도입 가능
  • 협업 경험이 적은 팀 : 단순한 Feature Branch 전략 추천

배포 주기

  • 잦은 배포 : Trunk-Based Development나 GitHub Flow
  • 정기 배포 : Git Flow나 Release Branch 전략

프로젝트 복잡도

  • 단순한 프로젝트 : Feature Branch나 Trunk-Based Development
  • 복잡한 프로젝트 : Git Flow나 Release Branch 전략

테스트 자동화 수준

  • 자동화된 테스트가 잘 갖춰진 경우 : Trunk-Based Development 가능
  • 수동 테스트가 많은 경우 : Feature Branch나 Git Flow 권장

단점

  1. 복잡한 브랜치 구조
  2. 느린 배포 주기
  3. 브랜치 관리 오버헤드

GitHub Flow 구조

  • main : 항상 배포 가능한 상태 유지
  • feature : 기능 개발용 브랜치

장점

  1. 단순한 구조
  2. 빠른 배포 가능
  3. CI/CD에 적합

단점

  1. 버전 관리가 어려움
  2. 대규모 프로젝트에는 부적합

GitLab Flow

구조

  • production : 배포 브랜치
  • pre-production : 사전 배포 브랜치
  • main : 개발 브랜치
  • feature : 기능 개발 브랜치

장점

  1. 환경별 브랜치 관리 용이
  2. 단계적 배포 가능
  3. Git Flow보다 단순

단점

  1. 환경별 브랜치 동기화 필요
  2. 중간 규모 이상 프로젝트에 적합
  3. 브랜치 전략 선택 시 고려사항

Trunk-Based Development

특징

  1. 단일 메인 브랜치 사용
  2. 작은 단위의 잦은 커밋
  3. 짧은 수명의 피처 브랜치

장점

  1. 빠른 개발 속도
  2. 간단한 브랜치 관리
  3. 지속적 통합 용이

단점

  1. 높은 수준의 자동화 필요
  2. 코드 품질 관리 어려움

Trunk-Based Development 추천

  • 빠른 개발 속도
  • 단순한 구조
  • 즉각적인 배포
profile
백엔드 개발자에서 프론드엔드 개발자로

0개의 댓글