Git Flow는 무엇인가?

2ntro·2022년 7월 26일
0

Git Flow

1. Git Flow 요약

Git의 Branch를 효율적으로 쓰기위한 Branching 전략 중 하나

작업 목적에 따라 5가지 Branch 종류를 사용

2. 왜 쓰는가? 배경

2.1 Git의 장점 복습

  • Git을 이용하면 하나의 프로젝트를 여러 사람들과 함께 병렬적으로 개발이 가능하다.
  • 브랜치(Branch) 는 하나의 저장소를 여러 개발자가 독립적으로 개발할 수 있게 만드는 Git의 핵심 기능

2.2 Branch 전략

무분별한 Branching 시 협업에 다음과 같은 문제가 발생할 수 있다.

  • "A branch"는 무슨 역할을 하는가? - 네이밍 규칙이 없는 경우
  • 새로 개발을 하려는데 어떤 Branch를 사용해야 하는가? - Branch Tree 구조가 논리적이지 않은 경우
  • 작업중인 Branch는 어느 Branch로 부터 분기 했는가? - Branch 분기의 규칙이 없는 경우

-> Branch 활용 방식(생성, 삭제, 병합 등)에 규칙을 만들자!

2.3 기초 - Branch 생명 주기

새로운 Branch가 생성되고 기존 Branch에 merge 까지의 과정

  1. develop Branch 생성
  2. 기능 개발
  3. Pull Request & 코드 리뷰
  4. 임시 배포 검증 & 테스트
  5. 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 신규 기능 개발 시작

master -> develop -> feature -> develop

4.2 라이브 서버 배포

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. 인용

0개의 댓글

관련 채용 정보