우아한 형제들 기술 블로그의 나동호님의 우린 Git-flow를 사용하고 있어요 글을 읽고 정리하였습니다.

Git Repository 구성

  • Upstream Repository
    • 개발자들이 공유하는 저장소
    • 최신 코드가 저장되어 있는 원격 저장소
  • Origin Remote Repository
    • Upstream Repository를 Fork한 원격 개인 저장소
  • Local Repository
    • 내 컴퓨터에 저장되어 있는 개인 저장소

 

Workflow

(사진 출처: dev.to)

  • Local Repository에서 작업을 완료한 후 작업 브랜치를 Origin Repository에 push
  • Github에서 Origin Repository에 push한 브랜치를 Upstream Repository로 merge하는 Pull Request 생성
  • 코드 리뷰를 거친 후 merge
  • 다시 새로운 작업을 할 때 Local Repository에서 Upstream Repository를 pull

 

왜?

  • 모두가 공유하고 있는 Upstream Repository에서 직접 개발하는 것은 위험하다.
  • Origin Repository(Forked)를 두면 부담 없이 원하는 실험들을 해볼 수 있다.
  • 브랜치의 생성, 삭제, 병합 등 git의 유연한 구조를 활용해서 각 개발자들의 혼란을 최대한 줄인다.

 

Git-flow의 5가지 종류 브랜치

  • master: 제품으로 출시될 수 있는 브랜치
  • develop: 다음 출시 버전을 개발하는 브랜치
  • feature: 기능을 개발하는 브랜치
  • release: 이번 출시 버전을 준비하는 브랜치
  • hotfix: 출시 버전(master 브랜치)에서 발생한 버그를 수정하는 브랜치

 

Git-flow Model

  • 처음에 Master와 develop 브랜치가 존재하며, develop 브랜치는 master에서부터 시작된 브랜치다.
  • develop 브랜치에서는 상시로 버그를 수정한 커밋들이 추가된다.
  • 새로운 기능 추가 작업이 있는 경우 develop 브랜치에서 feature 브랜치를 생성한다.
    • feature 브랜치는 언제나 develop브랜치에서부터 시작한다.
  • 기능 추가 작업이 완료되었다면 feature 브랜치는 develop 브랜치로 merge된다.
  • develop에 이번 버전에 포함되는 모든 기능이 merge 되었다면 QA를 하기 위해 release 브랜치를 생성한다.
  • QA를 진행하면서 발생한 버그들은 release 브랜치에 수정된다.
  • QA를 모두 통과했다면 release 브랜치를 master와 develop 브랜치로 merge한다.
  • 마지막으로 출시된 master 브랜치에서 버전 태그를 추가한다.

 

작업할 때 지켜야할 협업 원칙

  • 커밋 크래프는 최대한 단순하게 가져간다.
  • 서로 공유하는 브랜치의 커밋 그래프는 함부로 변경하지 않는다.
  • 서로 공유하는 브랜치에 대한 반영사항은 반드시 Pull Request와 코드 리뷰, merge 과정을 거친다.
  • 리뷰어에게 꼭 리뷰를 받는다.
  • 자신의 Pull Request는 스스로 merge한다.

 

작업 브랜치와 feature 브랜치의 삭제 시점

  • fork repository의 작업 브랜치들은 Pull Request를 요청 후 merge와 함께 삭제
  • feature 브랜치 역시 develop 브랜치에 merge와 함께 삭제

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기