티스토리 뷰

API

Git) Git-Flow 전략 사용해보기

Henry95 2020. 5. 3. 22:57
반응형

Git-Flow란?

git을 사용한 브랜칭 기법이다. 프로젝트를 진행하면서 수많은 브랜치를 생성하고 병합하는데 이러한 수많은 브랜칭 작업을 규격화하여 브랜치를 쉽게 다룰 수 있도록 해 주는 규칙, 전략이라고 할 수 있음 브랜칭 모델은 여러 가지가 있지만 git flow는 gui 툴들에서도 기본적으로 기능으로 제공될 정도로 가장 보편화 되어있는 모델임

 

git flow에는 기본적으로 feature, develop, release, hotfix, master 5가지 종류의 브랜치가 있습니다. 각각 브랜치는 특정한 목적을 위해 만들어지며, 이는 필요에 따라 생성과 삭제가 될 수 있음

 

Git Repository 살펴보기

먼저 Repository를 살펴보자면 Repository는 아래의 세가지로 나누어진다.

 

1. Upstream Remote Repository(이하 Upstream Repository)

- 개발자들이 공유하는 저장소로 최신 소스코드가 저장되어 있는 원격 저장소

 

2. Origin Remote Repository(이하 Origin Repository)

- Upstream Repository를 Fork한 원격 개인 저장소

 

3. Local Repository

- 내 컴퓨터에 저장되어 있는 개인 저장소

 

 

 

위 그림은 동호와 현정, 현주 세명의 팀 프로젝트를 보여준다. 세명은 각자의 로컬에서 작업을 마치고 각자 Origin Repository에 Push한다. 그리고 Github에서 Origin Repository에 push한 브랜치를 Upstream Repository로 merge하는 Pull Request를 생성하고 코드리뷰를 거친 후 merge 합니다. 다시 새로운 작업을 할 때 Local Repository에서 Upstream Repository를 pull 합니다.

 

 

Git-Flow 전략 간단하게 살펴보기

 

Git-flow를 사용했을 때 작업을 어떻게 하는지 살펴보기 전에 먼저 Git-flow에 대해서 간단히 살펴보겠습니다.
Git-flow에는 5가지 종류의 브랜치가 존재합니다. 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있습니다.

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

 

 

 

위 그림을 일반적인 개발 흐름으로 살펴보겠습니다.
처음에는 master와 develop 브랜치가 존재합니다. 물론 develop 브랜치는 master에서부터 시작된 브랜치입니다. develop 브랜치에서는 상시로 버그를 수정한 커밋들이 추가됩니다. 새로운 기능 추가 작업이 있는 경우 develop 브랜치에서 feature 브랜치를 생성합니다. feature 브랜치는 언제나 develop 브랜치에서부터 시작하게 됩니다. 기능 추가 작업이 완료되었다면 feature 브랜치는 develop 브랜치로 merge 됩니다. develop에 이번 버전에 포함되는 모든 기능이 merge 되었다면 QA를 하기 위해 develop 브랜치에서부터 release 브랜치를 생성합니다. QA를 진행하면서 발생한 버그들은 release 브랜치에 수정됩니다. QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 합니다. 마지막으로 출시된 master 브랜치에서 버전 태그를 추가합니다.

 

위의 과정을 각자의 역할별로 정리하면 아래와 같음

 

 

master

- 가장 처음에 존재하는 브랜치

- release에서 QA를 마친다음 merge된 후 버전 태그를 추가해줌

 

develop

- 가장 처음에 존재하지만 master로부터 시작됨

- 상시로 버그를 수정한 커밋들이 추가됨

- 이번 버전에 포함되는 모든 기능이 merge 되었으면 QA를 위해 release브랜치를 생성함

 

feature

- 새로운 기능 추가 작업이 있는 경우 develop에서 feature브랜치를 생성함

- 언제나 develop브랜치에서 시작함

- 기능추가가 완료되면 develop 브랜치로 merge함

 

release

- develop으로부터 QA를 위해 생성된 브랜치

- QA를 진행하면서 발생된 버그들은 release브랜치에서 수정됨

- QA를 무사히 마쳣다면 master와 develop브랜치로 merge함

 

 

위에서 언급되지 않은 hotfix에 대한 설명을 덧붙이자면 아래와같다.

 

hotfix

Hotfix브랜치는 릴리즈된 Product에서 발생한 버그들을 수정하기 위한 브랜치 입니다. 따라서 hotfix 브랜치는 master로부터 파생되며 수정한 버그들을 적용하기 위해 master와 develop 브랜치 모두에 병합됩니다. 만약 release 브랜치가 존재한다면 release 브랜치에도 hotfix 브랜치를 병합하여 다음 릴리즈때 내용이 적용되도록 해야 합니다. hotfix 브랜치의 이름 역시 hotfix-*, hotfix/*과같이 지정합니다.

 

 

[출처] : 우아한 형제들 블로그

https://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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 29 30
글 보관함