| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 공부할 거 넘많다~
- HTML
- jQuery
- 백준
- Next.js
- 서버 컴포넌트
- 힘들었던 한주
- 책으론 원리만
- JavaScript
- fetch pull 차이
- git flow finish
- Mac
- Main
- 바닐라JS
- CSS
- TS
- js
- AJAX
- 개발일지
- 끝까지 잘 마무리하기
- 다시 홧팅
- git
- api 라우트
- javascript30
- 차이점
- 실무는 공식문서로
- 클라이언트 컴포넌트
- axios
- git flow start
- freecodecamp
- Today
- Total
다다의 개발일지 6v6
[Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략 본문
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 자동화를 함께 사용하면 해결 가능
'DevTools' 카테고리의 다른 글
| [Git] git 명령어 정리해보자!! - 완벽하게 이해하기 (기본명령어, flow명령어 등) (1) | 2025.03.22 |
|---|---|
| [Mac] homebrew - macOS 개발 환경의 필수 패키지 관리자 (0) | 2025.03.09 |
| [Mac] 맥북 마스터하기!! 나를 위한 단축키 + 꿀팁 저장 (0) | 2025.03.04 |