infinity : 무한한 성장가능성

git flow model 본문

Develop

git flow model

인피니 2022. 1. 22. 01:00

git flow란 ?

git flow를 말한다면? 크게 두가지로 나눠질 수 있음 

  1. 브랜치를 어떻게 운영할 것인가에 대한 좋은 사례 
  2. 위의 사례를 쉽게 운영할 수 있도록 도와주는 프로그램을 의미하기도 함(git에 내장되어있음)

이번 포스팅은 1에 대한 내용이다😊

git flow 에서 사용하는 브랜치는 5가지 종류가 있다.

  1. master : 제품으로 출시될 수 있는 브랜치, 항상 실행 가능한 상태를 유지해야 한다.
  2. develop : 다음 출시 버전을 개발하는 브랜치, 실행가능한 상태를 만들어가는 과정 
  3. feature : 기능을 개발하는 브랜치 
  4. release: 이번  출시 버전을 준비하는 브랜치 
  5. hotfix: 출시 버전에서 발생한 버그를 수정하는 브랜치

ㅇㅇㅇ
git flow model 그림

더보기

 

1.개발자는 develop브랜치에서 자신이 개발할 기능을 위한 feature브랜치를 만든다.

2. feature 브랜치에서 기능을 만든다. 기능이 완성되면 master브랜치에 merge 한다. feature 브랜치를 삭제한다.

->master브랜치에 merge할때 git merge --no-ff merge할 브랜치이름 ( -no--ff의 option을 추가)

-> 왜 해당옵션을 추가해야 할까? commit log를 남기기 위해서 

 -> ex) develop에서 feature 브랜치를 만들어 작업을 하고 합치면 기존 develop브랜치에서는 변화가 없기 때문에 fast forward merge를 한다. 그럴경우 commit log가 남겨지지 않는다. 

-> 커밋로그를 만들어 언제든지 해당 기능을 추가하기 전으로 되돌릴 수 있도록 만들어야 한다. 

3. 배포를 위한 기능이 develop 브랜치에 모두 merge되었다면 , release 브랜치를 생성한다.

+) release 브랜치에서 bugfix 발생시 release 브랜치에서 수정해라

4. 배포 버전이 포함된 release 브랜치를 master 브랜치에 추가한다. 만약 bugfix가 release 브랜치에서 추가되었을 경우 해당 내용을 develop 브랜치에도 merge 해준다. merge 완료후 배포 버전에 해당하는 release branch를 삭제한다. 

( 모두 merge 시 fast forward merge를 하지 않도록 git merge --no-ff 옵션을 추가해 merge하자)

5. 만약 제품(master 브랜치)에서 버그가 발생하면 hotfix브랜치를 만든다.

6. hotfix 브랜치에서 bugfix 가 종료되었다면 develop, master에 추가한다. 

+) git tag 버전 : 출시한 버전을 기록할 때 사용  

-> git tag를 통해 버전관리를 쉽게 할수 있다 

(추후 포스팅 하기 ) 

https://nvie.com/posts/a-successful-git-branching-model/

( git flow model에 대해 설명이 잘 된 블로그이다.)