졸업 작품 때 Git flow 전략을 사용해 3개월 간의 개발 프로젝트를 성공적으로 마무리했던 경험이 있다. 그때는 별도로 블로그에 정리해서 포스팅하지 않았던 것 같아서 이번 기회에 정리하였다.
GIT 브랜치 전략의 필요성
소프트웨어 개발에서는 여러 개발자가 동일한 코드 저장소에서 협업하는 경우가 많다.
이때, 효율적인 브랜치 관리 전략이 없으면 최신 코드 확인, 개발 시작 지점 결정, 배포 브랜치 선택 등이 혼란을 초래할 수 있다.
이러한 문제를 해결하기 위해 Git 브랜치 전략이 등장했다.
Git 브랜치 전략은 개발자들이 협업할 때 코드 충돌을 최소화하고, 일정한 규칙을 통해 소스를 체계적으로 관리하는 방법론이다.
이번 글에서는 가장 널리 사용되는 Git 브랜치 전략인 Git-Flow와 GitHub-Flow에 대해 정리해 보겠다.
Git-Flow 전략

Git-Flow는 긴 개발 주기를 가진 프로젝트에 적합한 브랜치 전략으로, 여러 개의 브랜치를 활용하여 기능 개발, 테스트, 배포를 체계적으로 관리하는 방식이다.
특히, Git-Flow는 배포 버전 관리 및 핫픽스 처리와 같은 복잡한 개발 프로세스를 지원하는 것이 특징이다.
Git-Flow 브랜치 구조
Git-Flow는 메인 브랜치(2개)와 보조 브랜치(3개)로 구성된다.
메인 브랜치
- master (main)
- develop
보조 브랜치
- feature
- release
- hotfix
Git-Flow 작업 흐름
1. 신규 기능 개발
git checkout -b feature/new-feature develop
# 기능 개발 진행
# ...
git checkout develop
git merge feature/new-feature
git branch -d feature/new-feature
- 개발자는 develop에서 새로운 feature 브랜치를 생성하여 개발을 진행한다.
- 개발이 완료되면 develop으로 병합하고, feature 브랜치는 삭제한다.
2. 배포 준비 (Release 브랜치 생성)
git checkout -b release/v1.0 develop
# QA 및 테스트 진행
# ...
git checkout master
git merge release/v1.0
git tag -a v1.0 -m "Release v1.0"
git checkout develop
git merge release/v1.0
git branch -d release/v1.0
- 새로운 배포를 준비할 때 release 브랜치를 생성하여 QA 및 테스트를 진행한다.
- 테스트 완료 후 master에 병합하고, 버전 태그를 추가한 뒤 develop에도 병합한다.
3. 긴급 버그 수정 (Hotfix 브랜치 생성)
git checkout -b hotfix/fix-bug master
# 버그 수정
# ...
git checkout master
git merge hotfix/fix-bug
git checkout develop
git merge hotfix/fix-bug
git branch -d hotfix/fix-bug
- 운영 중인 서비스에서 긴급한 버그가 발생하면 hotfix 브랜치를 생성하여 해결한다.
- master와 develop에 모두 병합하여 동기화한다.
Git-Flow 장점 & 단점
장점
- 체계적인 브랜치 관리로 대규모 프로젝트 운영에 적합
- 명확한 역할 분리(개발, 테스트, 배포, 핫픽스 등)
- 버전 태깅과 QA가 용이하여 안정적인 배포 가능
단점
- 브랜치가 많아 복잡할 수 있음
- 빠른 배포가 필요한 환경에서는 다소 비효율적
GitHub-Flow 전략

GitHub-Flow는 Git-Flow보다 단순한 브랜치 전략으로, 짧은 개발 주기를 가진 프로젝트(예: 지속적인 배포 시스템)에 적합하다.
GitHub-Flow는 자동화 및 지속적 통합(CI/CD)과 결합하여 운영되는 경우가 많다.
GitHub-Flow 브랜치 구조
- main (기존 master): 항상 최신 안정 버전을 유지하는 브랜치
- 기능 브랜치: main에서 분기하여 개발을 진행하며, 완료되면 Pull Request(PR)를 통해 병합
GitHub-Flow 작업 흐름
1. 브랜치 생성
git checkout -b feature/new-feature main
- 새로운 기능 개발, 버그 수정 등 모든 작업은 main 브랜치에서 새로운 브랜치를 생성하여 진행
2. 개발 & 커밋 & 푸시
git add .
git commit -m "Add new feature"
git push origin feature/new-feature
- 작업이 완료되면 원격 저장소에 푸시
3. Pull Request(PR) 생성
- GitHub에서 PR(Pull Request)을 생성하여 코드 리뷰 요청
4. 코드 리뷰 & 테스트
- 팀원들과 코드 리뷰 및 테스트를 진행
5. Merge 및 배포
git checkout main
git merge feature/new-feature
git push origin main
- Merge가 완료되면 자동으로 배포됨 (CI/CD 활용)
GitHub-Flow 장점 & 단점
장점
- 빠른 개발 및 배포 가능 (배포 자동화와 연계 가능)
- 브랜치가 적어 관리가 용이
- Pull Request(PR) 기반 코드 리뷰 가능
단점
- 긴 개발 주기 프로젝트에는 적합하지 않음
- QA 및 테스트 브랜치가 없어 신중한 배포가 필요
Git-Flow vs GitHub-Flow 비교
- 장기적인 프로젝트(정기적 배포 & QA 필요) → Git-Flow 추천
- 빠른 개발 & 지속적 배포(CI/CD 환경) → GitHub-Flow 추천
비교 항목
|
Git-Flow
|
GitHub-Flow
|
브랜치 개수
|
다수 (master, develop, feature, release, hotfix)
|
최소 (main + 기능 브랜치)
|
배포 방식
|
배포 주기(릴리즈 버전 기반)
|
지속적인 배포(CI/CD)
|
버전 관리
|
명확한 버전 태깅
|
자동 배포 위주
|
적합한 프로젝트
|
대규모 프로젝트, 긴 개발 주기
|
빠른 배포가 필요한 프로젝트
|
'Dev > Git & Github' 카테고리의 다른 글
Git 핵심 요약 (0) | 2025.03.09 |
---|