🧪 실전 예제로 배우는 Git Flow 전략
- 기능 개발부터 릴리스, 버그 수정까지 한눈에 흐름 정리
📘 시나리오
지금부터 MyShop이라는 쇼핑몰 프로젝트에서 로그인 기능 개발 → 버전 릴리스 → 긴급 버그 수정이라는 흐름을 Git Flow 전략에 따라 진행해보겠습니다.
1️⃣ 프로젝트 초기화
# 기본 브랜치(main)는 이미 존재한다고 가정
git checkout -b develop
git push -u origin develop
- main은 항상 배포 가능한 안정 코드
- develop은 다음 릴리스를 위한 통합 개발 브랜치
2️⃣ 기능 개발 (로그인 기능)
# develop에서 새로운 기능 브랜치 생성
git checkout develop
git checkout -b feature/login
# 로그인 기능 개발 작업
# 파일 수정, 커밋...
git add .
git commit -m "feat: 로그인 기능 구현"
# 기능 완료 후 develop에 병합
git checkout develop
git merge feature/login
git branch -d feature/login
🔄 정리
- feature/login 브랜치에서 기능을 개발하고
- 완료되면 develop으로 병합 후 삭제
3️⃣ 릴리스 준비 (v1.0.0)
# release 브랜치 생성
git checkout develop
git checkout -b release/1.0.0
# 테스트 중 발견된 마이너 이슈 수정
git commit -am "fix: 로그인 버튼 색상 조정"
# 릴리스 완료 → main에 병합
git checkout main
git merge release/1.0.0
git tag -a v1.0.0 -m "🎉 Release v1.0.0"
# develop에도 병합 (테스트 수정사항 반영)
git checkout develop
git merge release/1.0.0
# release 브랜치 삭제
git branch -d release/1.0.0
✅ main은 최신 배포 버전
✅ develop은 다음 기능 개발 준비 완료
4️⃣ 긴급 버그 수정 (v1.0.1)
배포 후 로그인 시 예외 발생 보고됨! 🔥
# main에서 hotfix 브랜치 생성
git checkout main
git checkout -b hotfix/login-crash
# 문제 수정
git commit -am "fix: 로그인 시 NullPointerException 발생 문제 해결"
# 수정 완료 → main에 병합
git checkout main
git merge hotfix/login-crash
git tag -a v1.0.1 -m "🔧 Hotfix: 로그인 버그 수정"
# develop에도 병합 (다음 개발에 반영)
git checkout develop
git merge hotfix/login-crash
# hotfix 브랜치 삭제
git branch -d hotfix/login-crash
🔄 전체 흐름 요약
main
└─ release/1.0.0 → 🔀 merge → main + develop (릴리스)
└─ hotfix/login-crash → 🔀 merge → main + develop (버그 수정)
develop
└─ feature/login → 🔀 merge → develop (기능 개발)
📌 브랜치별 용도 다시 보기
브랜치 | 용도 |
main | 운영 중인 최종 코드 (배포 버전) |
develop | 다음 릴리스를 위한 통합 개발 브랜치 |
feature/* | 기능 단위 개발 (개발자 개인 작업 공간) |
release/* | 배포 전 테스트/수정/버전 태깅 |
hotfix/* | 운영 중 긴급 수정 및 패치 |
🧠 팁: Git Flow는 언제 쓰면 좋을까?
- ✅ 협업 인원이 3명 이상이고
- ✅ 기능/릴리스/버그 수정이 병렬적으로 발생하며
- ✅ 릴리스 주기가 명확히 존재할 때
이런 상황이라면 Git Flow는 버전 관리의 복잡성을 줄이고, 팀 간 충돌을 줄여줍니다.
✅ 마무리
Git Flow는 단순히 브랜치를 나누는 것이 아니라,
기능 개발, 테스트, 릴리스, 유지보수 작업의 전체 흐름을 시각적으로 설계하게 해줍니다.
실제 프로젝트에서도 이번 예시처럼
- 기능 단위로 feature/* 브랜치를 만들고
- 안정성 테스트를 release/*에서 진행하며
- 문제가 생기면 hotfix/*로 바로 대응하는 방식이
협업의 효율성과 서비스 안정성을 크게 높여줍니다.
'Git > GitHub' 카테고리의 다른 글
Git Branch 전략 - Git Flow (0) | 2025.05.03 |
---|---|
GitHub - Image 올리기 (README, Issue, PR) (0) | 2021.08.22 |