다다의 개발일지 6v6

[Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략 본문

DevTools

[Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략

dev6v6 2025. 3. 14. 16:47

Git Flow란?

Git Flow는 Git을 활용한 브랜치 전략(Workflow) 중 하나이다.
✅ 협업을 쉽게 하기 위해 브랜치 역할을 명확히 구분
안정적인 배포를 위해 개발/배포 단계별 브랜치를 운영
새로운 기능 개발과 버그 수정을 체계적으로 관리

 

 Git Flow 브랜치 구조

Git Flow에서는 5가지 주요 브랜치를 사용
각 브랜치마다 역할이 다르며, 장기 브랜치(항상 존재)와 단기 브랜치(필요할 때 생성됨)나뉜다.

🔹 장기(Long-lived) 브랜치 → 항상 유지됨

main 실제 서비스 운영 중인 배포용 브랜치
develop 개발 중인 최신 코드가 모이는 브랜치

🔹 단기(Short-lived) 브랜치 → 필요할 때 생성 후 삭제됨

feature 새로운 기능을 개발하는 브랜치
release 배포 준비를 위한 브랜치
hotfix 운영 중인 서비스에서 긴급 버그 수정

 

Git Flow 브랜치 흐름

 

✅ main 브랜치

  • 실제 서비스에서 운영되는 최종 배포 코드를 관리하는 브랜치.
  • 절대 직접 개발을 하지 않고, 오직 release 또는 hotfix 브랜치에서만 병합됨.

📌 항상 안정적인 코드만 존재해야 함!
📌 버전 태그(v1.0.0, v1.1.0 등)를 달아서 관리하기도 함.

 

✅ develop 브랜치

  • feature 브랜치에서 개발한 기능들이 합쳐지는 브랜치.
  • 개발자들이 이 브랜치를 기준으로 새로운 기능을 개발.
  • 기능이 완성되면 release 브랜치를 만들어서 배포 준비를 함.

📌 메인 개발 브랜치! (main 브랜치는 안정적인 버전, develop은 최신 개발 버전)

 

✅ feature 브랜치 (새로운 기능 개발) : develop -> feature -> develop

  • 새로운 기능을 추가할 때 사용하는 브랜치.
  • 항상 develop 브랜치에서 분기하고, 개발이 끝나면 다시 develop에 병합된다.
  • 브랜치 이름은 보통 feature/기능명 형태로 작성.

📌 예제

# 새로운 기능 개발 시작 (ex: 로그인 기능 추가)
git checkout develop  # develop 브랜치로 이동
git checkout -b feature/login  # 새로운 feature 브랜치 생성

 

✅ 개발 완료 후 develop으로 병합 후 삭제

git checkout develop
git merge feature/login  # 기능 병합
git branch -d feature/login  # 브랜치 삭제

 

 

✅ release 브랜치 (배포 준비) : develop -> release -> main, develop

  • develop에서 최신 기능이 모두 추가되면 배포 전 최종 테스트 및 버그 수정을 위해 release 브랜치를 만듦
  • 배포 준비가 끝나면 main으로 병합하고, 버전 태그를 붙인 후 브랜치를 삭제

📌 예제

git checkout develop
git checkout -b release/1.0.0  # 배포 준비 브랜치 생성

 

✅ 버그 수정 후 배포 완료 (main)

git checkout main
git merge release/1.0.0  # main에 병합 (배포 완료)
git tag -a v1.0.0 -m "Release version 1.0.0"  # 버전 태그 추가
git branch -d release/1.0.0  # 브랜치 삭제

 

develop에도 반영

git checkout develop
git merge main  # 최신 배포 내용을 develop에도 반영

 

 

✅ hotfix 브랜치 (긴급 버그 수정) : main -> hotfix -> main, develop

  • 배포된 main 브랜치에서 급한 버그가 발생했을 때 사용하는 브랜치.
  • 배포가 끝난 후 main과 develop에 모두 반영해야 함.

📌 예제

git checkout main
git checkout -b hotfix/fix-login  # 긴급 버그 수정 브랜치 생성

 

✅ 수정 후 main 및 develop에 반영

git checkout main
git merge hotfix/fix-login  # 버그 수정 내용 main에 병합
git tag -a v1.0.1 -m "Hotfix version 1.0.1"  # 핫픽스 버전 태그 추가
git branch -d hotfix/fix-login  # 브랜치 삭제

git checkout develop
git merge main  # 핫픽스 내용을 develop에도 반영

 

 

Git Flow 사용법 (터미널 명령어)

Git Flow를 쉽게 사용할 수 있도록 git-flow 확장 플러그인이 존재함.

 

설치 방법

# Mac (Homebrew 사용)
brew install git-flow

# Ubuntu
sudo apt-get install git-flow

 

초기화

git flow init
  • develop 브랜치를 기본 브랜치로 설정
  • feature/, release/, hotfix/ 등의 접두사를 자동으로 사용

새로운 기능 개발 시작

git flow feature start 로그인기능

 

기능 개발 완료 후 병합

git flow feature finish 로그인기능

 

배포 준비

git flow release start 1.0.0
git flow release finish 1.0.0

 

핫픽스 (긴급 수정)

git flow hotfix start fix-login
git flow hotfix finish fix-login

 

Git Flow의 장점 & 단점

 

장점

체계적인 브랜치 관리 → 개발, 테스트, 배포 과정이 명확해짐
협업이 쉬워짐 → 여러 개발자가 동시에 작업 가능
안정적인 배포 → main 브랜치는 항상 안정적인 상태 유지
버전 관리가 용이 → release & hotfix 브랜치 덕분에 버전별 코드 관리 가능

단점

 작은 프로젝트에는 다소 복잡할 수 있음 → 팀원이 적거나 단순한 프로젝트에는 오버헤드가 발생할 수도 있음
 배포가 잦으면 release 브랜치 관리가 번거로움 → CI/CD 자동화를 함께 사용하면 해결 가능