Git) Git Flow
오늘은 어제의 개인 프로젝트를 뒤로하고 새로운 프로젝트에 대한 준비 과정을 가졌다.
그 중 Git을 통해 협업 시, 어떤 부분들을 주의 해야 하는지, 어떤 식으로 관리 하는 것이 좋을지, 등 여러 사용법에 대해 알 수 있었다.
튜터님과 저장소에 대해 이것저것 수정 하던 중, 저장소 하나를 통으로 날렸지만..
Git FlowPermalink
Git Flow는 브랜치 전략(branching model) 중 하나로, 개발 프로세스를 명확하게 정의하여 협업을 효율적으로 관리할 수 있도록 돕는 Git 브랜치 워크플로우다.
아래 방식은 Vincent Driessen이 제안한 방식으로, 여러 개의 브랜치를 사용하여 개발, 릴리즈, 핫픽스를 구조적으로 관리한다.
Git Flow의 주요 브랜치Permalink
Git Flow는 크게 5가지 유형의 브랜치를 사용한다.
브랜치 | 역할 | 설명 |
---|---|---|
master |
제품 릴리스 | 최종 제품이 배포되는 안정적인 브랜치 |
develop |
개발 브랜치 | 최신 개발 작업이 진행되는 기본 브랜치 |
feature |
기능 개발 | 새로운 기능을 개발하는 브랜치 (develop 에서 분기) |
release |
릴리즈 준비 | 버그 수정 및 최종 테스트를 거쳐 master 로 병합 |
hotfix |
긴급 버그 수정 | 배포된 제품에서 발생한 심각한 버그를 즉시 수정 (master 에서 분기) |
Git Flow의 작업 흐름Permalink
develop
브랜치에서 개발 진행Permalink
develop
브랜치는 최신 개발 코드가 모이는 중앙 브랜치다.- 새로운 기능이 필요하면 feature 브랜치를 생성하여 독립적으로 개발한다.
git checkout develop
git checkout -b feature/new-feature
feature
브랜치에서 기능 개발 후 develop
으로 병합Permalink
- 각 기능은 독립적인
feature
브랜치에서 개발되며, 완료되면develop
에 병합됩니다.
git checkout develop
git merge feature/new-feature
git branch -d feature/new-feature
release
브랜치에서 최종 테스트 및 버그 수정Permalink
- 특정 버전을 출시하기 전,
release
브랜치를 생성하여 테스트를 진행한다.
git checkout develop
git checkout -b release/1.0
- 이 단계에서 버그 수정만 허용되며, 새로운 기능 추가는 금지다.
release
브랜치를 master
에 병합 후 태깅Permalink
- 테스트가 완료되면
release
브랜치를master
에 병합하고 태그(tag)를 생성한다.
git checkout master
git merge release/1.0
git tag -a 1.0 -m "Release version 1.0"
git checkout develop
git merge release/1.0
git branch -d release/1.0
hotfix
브랜치에서 긴급 수정Permalink
- 제품 배포 후 심각한 버그가 발생하면
master
에서hotfix
브랜치를 생성하여 즉시 수정한다.
git checkout master
git checkout -b hotfix/1.0.1
- 수정이 완료되면
master
와develop
에 병합 후 태그를 생성한다.
git checkout master
git merge hotfix/1.0.1
git tag -a 1.0.1 -m "Hotfix version 1.0.1"
git checkout develop
git merge hotfix/1.0.1
git branch -d hotfix/1.0.1
Git Flow의 장단점Permalink
장점Permalink
- 체계적인 브랜치 관리 → 개발, 테스트, 배포가 명확하게 구분됨
- 협업에 최적화 → 여러 개발자가 독립적으로 작업할 수 있음
- 안정적인 코드 유지 →
master
는 항상 배포 가능한 상태 유지
단점Permalink
- 작은 프로젝트에서는 불필요하게 복잡
- 병합이 많아질수록 충돌 가능성 증가 → 팀원 간의 커뮤니케이션이 필수적
댓글남기기