Git Flow
1. Git Flow 요약![](https://velog.velcdn.com/images/2ntro/post/91df49b3-98fd-4b02-923f-0d57c4a48796/image.png)
Git의 Branch를 효율적으로 쓰기위한 Branching 전략 중 하나
작업 목적에 따라 5가지 Branch 종류를 사용
2. 왜 쓰는가? 배경
2.1 Git의 장점 복습
- Git을 이용하면 하나의 프로젝트를 여러 사람들과 함께 병렬적으로 개발이 가능하다.
- 브랜치(Branch) 는 하나의 저장소를 여러 개발자가 독립적으로 개발할 수 있게 만드는 Git의 핵심 기능
![](https://velog.velcdn.com/images/2ntro/post/44099021-ee23-40e6-888e-c2c093718713/image.png)
2.2 Branch 전략
![](https://velog.velcdn.com/images/2ntro/post/bbbf2d46-2e2c-4877-8788-b6b721ed0f92/image.png)
무분별한 Branching 시 협업에 다음과 같은 문제가 발생할 수 있다.
- "A branch"는 무슨 역할을 하는가? - 네이밍 규칙이 없는 경우
- 새로 개발을 하려는데 어떤 Branch를 사용해야 하는가? - Branch Tree 구조가 논리적이지 않은 경우
- 작업중인 Branch는 어느 Branch로 부터 분기 했는가? - Branch 분기의 규칙이 없는 경우
-> Branch 활용 방식(생성, 삭제, 병합 등)에 규칙을 만들자!
2.3 기초 - Branch 생명 주기
![](https://velog.velcdn.com/images/2ntro/post/ab17ce6d-fe4d-4e39-8cd6-1bd56634bc67/image.png)
새로운 Branch가 생성되고 기존 Branch에 merge 까지의 과정
develop
Branch 생성
- 기능 개발
- Pull Request & 코드 리뷰
- 임시 배포 검증 & 테스트
master
Branch에 merge
3. Git Flow 어떻게 작동하는가? 원리
크게 5가지 Branch를 갖는다. - master
, develop
, release
,feature
, hotfix
3.1 master
& develop
master
: 제품의 배포가 이루어지는 branch
develop
: 개발한 기능들을 통합하는 branch
- 삭제되지 않는 Branch
3.2 release
& feature
& hotfix
release
: master로 보내기 전에 QA(품질검사)하는 branch
feature
: develop으로 보내기 전에 기능을 개발하는 branch
hotfix
: master에서 발생한 버그를 수정하는 branch
- 목적을 달성하면 삭제되는 branch
4. 단계별 예시를 통해 살펴보기
4.1 신규 기능 개발 시작
![](https://velog.velcdn.com/images/2ntro/post/9de5a268-93ff-4364-9e00-ed65a407fc09/image.png)
master
-> develop
-> feature
-> develop
4.2 라이브 서버 배포
![](https://velog.velcdn.com/images/2ntro/post/08891275-b701-4bbd-9f31-72a169253501/image.png)
A. develop
-> release
->(문제 없음) master
OR
B. develop
-> release
-> (버그 픽스) develop
4.3 배포 후 관리![[4.3 배포 후 관리.png]]
(핫 픽스 필요시) master
-> hotfix
-> master
OR (동기화) develop
5. Git Flow가 모든 경우에 적합하지는 않다
적합한 경우
- 목적별로 Branch를 나눌 만큼 프로젝트가 크거나 개발 인력이 많은 경우
- 일정 주기마다 배포를 진행할 경우 - 거치는 단계가 많은 만큼 배포 주기가 길어짐
적합하지 않은 경우
- branching 단계를 단순화한 Github Flow, Gitlab Flow등 대안 존재
6. 인용