반응형

배달의 민족 (우아한 형제들) 기술 블로그에서 Git Flow의 존재에 대해 알게 되고 간단하게 공부 및 사용 해보았다.

 

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

 

 

 

Git Flow는 Git을 사용하는 브랜칭기법 중 하나로 여러 개발자가 하나의 프로젝트를 개발하기 위해서 만든 브랜칭 규칙 및 모델이라고 보면 된다.

 

Git Flow는 크게 Master, Develop, Feature, Release, Hotfix로 구분된다.

 

Master : 언제든지 출시할 수 있는 상태의 브랜치

Develop : 개발자들이 주로 개발을 하게 되는 근본 브랜치

Feature : 개발자들이 하나의 기능을 추가하고 싶을 때 Develop으로부터 생성하여 작업 후 Develop으로 Merge한다.

Release : 출시 전 검사를 하기 위한 브랜치. Develop에서 생성하여 BugFix를 진행한 후 Master로 Merge 및 Develop 으로 Back Merge 한다.

Hotfix : Master에서 버그가 발생하였는데 Develop에서 다음 버전을 위한 패치가 진행 중일 경우 Master에서 생성하여 빠르게 버그 수정 후 Master로 Merge 한다.

 

 

아래는 간단한 Git Flow의 예제이다.

 

 

Linux에서 apt-get install git-flow를 통해 설치하여준다.

 

 

이미 존재하는 git 저장소에 git flow init 을 하면 git flow의 형태를 만들어 준다.

이 때 -f를 사용하면 이미 git flow가 존재하더라도 강제하여 만든다.

 

 

원래 master, develop 등 branch들의 이름을 설정할 수 있는데 -d를 사용하면 default 상태로 설정해준다.

 

 

git flow 사용법은 기본적으로 다음과 같다.

 

git flow <feature/release/hotfix> <start/finish> <name>

 

git flow feature start addtxt 를 통해 feature/addtxt  branch를 만들었다.

 

이후 사진에는 없지만 a.txt를 추가한 후 commit, git flow feature finish addtxt를 통해 develop에 merge하였다.

 

 

릴리즈를 시작한 모습. 릴리즈는 주로 이름에 버전명을 사용한다.

 

 

릴리즈에 버그 픽스 commit을 추가한 후 log를 보면 위와 같다.

 

release 를 finish 하면 위에서 언급했듯 master에 merge, develop에 back-merge 하며 버전명을 master에 tag로 달아준다.

 

이 외에도 우아한 형제들의 블로그를 보면 원격저장소에서 git-flow를 어떻게 사용하면 좋을지 예시를 볼 수 있다.

반응형