DevOps/Git

[Git] Git 브랜치 전략 : 팀 환경에 맞는 전략 선택과 운영 방법

okbear3 2025. 4. 26. 18:32

Git에서 브랜치는 단순한 코드 분기 기능을 넘어서, 개발, 테스트, 배포 흐름 전체를 팀에 맞게 정리할 수 있는 중요한 도구입니다.

이 글에서는 실무에서 자주 쓰이는 대표적인 Git 브랜치 전략 4가지를 각각의 구조, 병합 흐름, 배포 방식은 물론,
어떤 팀에서 어떻게 운영하는지, 팀 내부 규칙은 어떻게 정하는지까지 자세히 정리해보았습니다.


1. Git Flow

정형화된 브랜치 구조를 통해 안정적인 릴리스 주기를 관리하는 전략

Git Flow는 Vincent Driessen이 제안한 브랜치 전략으로 기능 개발, 릴리스 준비, 운영 반영, 버그 수정 등을 각기 다른 브랜치로 분리하여 장기 프로젝트나 안정성 중심의 개발에 적합합니다.

브랜치 구성

브랜치 설명
main 운영 환경(프로덕션)에 배포되는 최종 코드
develop 통합 개발 브랜치. 기능 브랜치들이 여기에 병합
feature/* 기능 단위 작업 브랜치 (develop에서 분기 → develop로 병합)
release/* 배포 준비용 브랜치 (develop에서 분기 → main에 병합)
hotfix/* 운영 중 발견된 긴급 수정 브랜치 (main에서 분기 → main과 develop로 병합)

병합 및 배포 흐름

  • develop 브랜치에서 feature/* 브랜치 생성
  • 기능 개발 후 develop로 병합
  • 배포 시점이 되면 release/* 브랜치 분기
  • 테스트 후 main으로 병합 + 태그(tag)
  • main에서 배포 진행
  • 긴급 이슈 발생 시 hotfix/* 브랜치 → main, develop 양쪽 병합

특징

  • 릴리스 주기가 명확한 조직에서 사용
  • 브랜치 수는 많지만 역할이 분리되어 관리가 용이함
  • CI는 보통 develop 또는 release/*에서 테스트, main에서 배포

 

2. GitHub Flow – PR 중심의 단순 병합 전략

PR 중심의 간결한 협업 구조로, 빠른 피드백과 자동 배포에 유리한 전략

GitHub Flow는 단일 main 브랜치를 중심으로 기능 개발 브랜치를 분기하고, PR(Pull Request)을 통해 코드 리뷰 후 병합하는 방식입니다. 히스토리를 단순하게 유지하며 빠른 릴리스가 가능합니다.

브랜치 구성

브랜치 설명
main 항상 배포 가능한 최신 코드
feature/* 또는 이슈번호-작업내용 기능/이슈 단위 브랜치 (main에서 분기 → main으로 PR)

병합 및 배포 흐름

  1. main에서 작업 브랜치 생성 (git checkout -b feature/login)
  2. 기능 개발 및 커밋
  3. GitHub에 Pull Request 생성
  4. 리뷰/승인 후 main에 병합 (merge, squash, rebase 선택)
  5. 병합 후 자동 배포 (CI/CD)

특징

  • 병합 전략은 GitHub Pull Request 옵션에 따라 결정
    • Merge commit 유지
    • Squash & Merge로 커밋 정리
    • Rebase & Merge로 히스토리 직선화
  • 작은 팀이나 자동 배포가 활성화된 팀에서 효과적

 

3. GitLab Flow

환경 분리를 고려한 전략으로, 테스트/운영 단계가 나뉘는 팀에 유리

GitLab Flow는 GitHub Flow의 단순한 브랜치 구조에 배포 환경(개발, 스테이징, 운영)을 분리하는 개념을 더한 전략입니다. GitLab CI/CD와 연계하여 자동 배포와 테스트를 효율적으로 수행할 수 있습니다.

브랜치 구성

브랜치 구성
main, production 운영 배포용 브랜치
staging, preprod 사전 테스트/검수 환경을 위한 브랜치
feature/*, bugfix/*, issue-* 작업용 브랜치 (기능/버그/이슈 단위)

병합 및 배포 흐름

  • main에서 feature/123-login 브랜치 생성
  • 작업 후 Pull/Merge Request로 staging 또는 main에 병합
  • GitLab CI/CD에서 환경별 Job 분기:
    • staging → 테스트 환경 배포
    • main → 운영 환경 배포
  • 병합 후 자동 태그(v1.2.0 등) 추가 시 배포 트리거 가능

특징

  • GitLab CI/CD 파이프라인에서 브랜치 이름 또는 태그 기준으로 Job 분기 가능
  • featurestagingmain 흐름이 유연하게 설계 가능
  • 이슈 트래킹 시스템(Jira 등)과 연계하기 좋음

 

4. Trunk-Based Development

단일 브랜치에서 자주 병합하며 자동화 배포 환경에 최적화된 빠른 개발 전략

Trunk-Based Development는 모든 개발이 하나의 메인 브랜치(main 또는 trunk)에 집중되며, 짧은 작업 단위(branch)를 빠르게 병합하여 지속 통합을 실현하는 전략입니다. 자동화된 테스트와 배포가 핵심입니다.

브랜치 구성

브랜치 설명
main 또는 trunk 유일한 핵심 브랜치 (항상 배포 가능)
(optional) feature/short-lived 1~2일 이내 병합되는 짧은 브랜치

병합 및 배포 흐름

  • 직접 main에서 작업하거나, 임시 feature/* 브랜치에서 개발
  • 기능 완료 즉시 main에 병합 (pull request 또는 직접 merge)
  • 병합 → 자동 빌드/테스트 → 자동 배포 (CI/CD full pipeline)
  • 하루 수십 회 병합이 일어나도 무방

특징

  • 테스트 자동화, 충돌 방지, 빠른 피드백이 핵심
  • feature flag(기능 토글) 또는 dark release를 함께 사용하면 위험 없이 배포 가능
  • 병합 전략은 보통 merge --no-ff 또는 squash

 

다양한 브랜치 전략 비교

 
전략핵심 목적병합 방식배포 연동추천 조직
전략 핵심 목적 병합 방식 배포 연동 추천 조직
Git Flow 정형화된 릴리스 단계별 병합 (feature → develop → release → main) 수동 또는 태그 기반 자동 배포 릴리스 중심 프로젝트
GitHub Flow 민첩한 피드백 PR 기반 병합 PR 병합 시 자동 배포 스타트업, 프론트엔드
GitLab Flow 환경 기반 분리 브랜치 또는 태그 기준 병합 환경별 CI/CD Job 구성 SaaS 운영, 테스트 환경이 있는 팀
Trunk-Based 빠른 배포 자동화, 작은 단위의 배포 빠른 병합 + 자동화 main 병합 시 즉시 배포 DevOps 조직, MSA 팀

지금까지 살펴본 네 가지 Git 브랜치 전략은 각각의 장점과 특징이 뚜렷합니다.
중요한 것은 "어떤 전략이 더 좋은가?"가 아니라, 우리 팀의 개발 방식과 배포 환경에 어떤 전략이 잘 맞는가를 고민하는 것입니다.

  • 정형화된 릴리스와 QA 프로세스가 있다면 Git Flow
  • 빠른 피드백과 단순한 구조가 필요하다면 GitHub Flow
  • 테스트/운영 환경이 명확하게 구분되어야 한다면 GitLab Flow
  • 빠른 배포와 자동화가 가능한 DevOps 환경이라면 Trunk-Based Development

각 전략에 맞는 브랜치 구조, 병합 방식, 팀 내 협업 규칙을 잘 설계하고 모두가 일관되게 지킬 수 있도록 정리해두는 것이 가장 중요합니다.


참고 문서