상세 컨텐츠

본문 제목

[Git] branch 전략

Devops 도전기/git

by 끝까지해봐야지 2024. 5. 21. 12:45

본문

Git 브랜치 전략은 프로젝트의 코드 변경 관리와 협업을 효율적으로 하기 위한 방법입니다. 다양한 전략 중 몇 가지를 소개하겠습니다.

Git Flow

Git Flow는 Vincent Driessen이 제안한 전략으로, 복잡한 브랜치 구조를 체계적으로 관리합니다. 이 전략은 메인 브랜치와 개발 브랜치를 분리하고, 기능 개발, 릴리스 준비, 긴급 수정 등을 각각의 브랜치에서 관리합니다.

브랜치 종류

  1. main: 최종적으로 배포되는 안정적인 코드가 위치.
  2. develop: 개발 중인 코드가 위치. 새로운 기능을 병합하기 전에 이 브랜치에서 통합 및 테스트.
  3. feature: 새로운 기능 개발을 위해 develop 브랜치에서 분기. 기능 개발이 완료되면 develop 브랜치로 병합.
  4. release: 릴리스를 준비하는 브랜치로, develop 브랜치에서 분기하여 안정화 작업을 진행. 작업 완료 후 main과 develop 브랜치로 병합.
  5. hotfix: 긴급 버그 수정을 위해 main 브랜치에서 분기. 수정 후 main과 develop 브랜치로 병합.
  • 특징: 복잡하지만 체계적. 메인 코드베이스를 main, 개발 중인 코드를 develop 브랜치로 관리.
  • 사용: 대규모 프로젝트나 명확한 릴리스 관리가 필요한 경우.

GitHub Flow

GitHub Flow는 단순한 워크플로로, 지속적 배포가 가능한 환경에서 많이 사용됩니다. 이 전략은 별도의 브랜치를 만들고, 변경 사항을 pull request를 통해 리뷰 및 병합하는 방식입니다.

브랜치 종류

  1. main: 항상 배포 가능한 상태를 유지.
  2. feature: 각 기능이나 버그 수정을 위한 브랜치로, 작업 완료 후 main 브랜치로 병합.
  • 특징: 단순하고 가벼움. 모든 기능은 별도의 브랜치에서 개발하고, main 브랜치에 병합.
  • 사용: 지속적 배포가 가능한 소규모 팀이나 프로젝트에 적합.

GitLab Flow

GitLab Flow는 환경별로 브랜치를 관리하여, CI/CD 파이프라인과 밀접하게 통합된 전략입니다. 개발, 테스트, 스테이징, 프로덕션 등 환경별 브랜치를 통해 배포를 관리합니다.

브랜치 종류

  1. main: 기본 브랜치로, 최신의 안정적인 코드가 위치.
  2. production: 프로덕션 환경의 코드가 위치.
  3. pre-production: 프로덕션 배포 전에 테스트를 위한 브랜치.
  4. feature: 새로운 기능 개발을 위한 브랜치.
  • 특징: 환경별로 브랜치를 관리하여 CI/CD 파이프라인과 밀접하게 통합.
  • 사용: 다양한 환경에서 배포를 관리하는 경우 유용.

Trunk-Based Development

Trunk-Based Development는 항상 main 브랜치를 최신 상태로 유지하며, 작은 단위의 변경을 자주 병합하는 전략입니다. 이 방식은 코드 리뷰와 자동화된 테스트를 통해 빠르게 통합하고 배포합니다.

브랜치 종류

  1. main: 유일한 브랜치로, 모든 변경 사항을 자주 병합.
  2. short-lived feature branches: 짧은 기간 동안 사용되는 기능 브랜치로, 작업 완료 후 main 브랜치로 신속히 병합.
  • 특징: 항상 main 브랜치를 최신 상태로 유지하고, 작은 단위로 자주 병합.
  • 사용: 빠른 배포와 지속적 통합이 중요한 프로젝트에 적합.

 

이러한 브랜치 전략을 통해 프로젝트의 크기, 팀의 규모, 배포 요구 사항 등에 맞춰 최적의 워크플로를 선택할 수 있습니다. 각 전략의 장단점을 잘 이해하고 상황에 맞게 적용하는 것이 중요합니다.

관련글 더보기