본문 바로가기
프로젝트

[Project] Git-flow master 및 develop branch 설정

by jaee_ 2021. 11. 13.

프로젝트를 진행하며, 팀원과 브랜치 관리를 위해 Git-Flow 전략을 사용하기로 결정하였습니다. 

 

Git-Flow 전략에 대해 간략하게 설명하고 넘어가자면, Git-Flow는 5가지의 브랜치를 이용하여 운영하는 브랜치 전략입니다. 이는 항상 유지되는 메인브랜치(master, develop) 브랜치와 일정 기간동안 유지되는 보조 브랜치( feature, release, hotfix )로 구성되어 있습니다. 

  • 메인브랜치
    • master : 제품으로 출시될 수 있는 브랜치
    • develop : 다음 출시 버전을 개발하는 브랜치
  • 보조브랜치 : merge가 되면 사라지는 브랜치
    • feature : 기능을 개발하는 브랜치
    • release : 이번 출시 버전을 준비하는 브랜치
    • hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치

순서는 다음과 같습니다. 

 

1. 개발자는 develop 브랜치로부터 본인이 개발한 기능을 위해 feature 브랜치를 만듭니다. 

2. feature 브랜치에서 기능을 만들고, 기능완성이 되면 develop 브랜치에 merge 합니다. 

3. 이번 배포 버전이 develop 브랜치에 모두 merge가 되었다면, QA를 위해 release 브랜치를 생성합니다.

4. release 브랜치에서 오류가 발생한다면 release 브랜치 내에서 수정합니다. 

   4-1. QA가 끝났다면 해당 버전을 배포하기 위해 master 버전으로 merge 합니다. 

   4-2. bugfix 가 있었다면, 수정한 부분을 develop 브랜치에도 반영하기 위해 develop 브랜치에도 merge합니다. 

5. master 브랜치에서 버그가 발생한다면, hotfix 브랜치를 생성합니다. 

6. hotfix 브랜치에서 bugfix가 끝나면, master브랜치와 develop 브랜치에 각각 merge합니다. 

 

그림으로 보면 다음과 같습니다. 

우아한 형제들 기술블로그 사진 인용


프로젝트를 진행하며 팀원과 함께 정한 룰이 있습니다. "master 또는 develop 브랜치에 merge하기 전 코드리뷰 및 2명이상의 approval을 받고나서 하자. " 라는 룰이었습니다. 실제로 운영하는 서비스를 개발할 때도 많이 쓰이는 룰이라고 알고 있습니다. 

 

이를 지키기 위해선 master 또는 develop 브랜치에 직접적으로 merge 또는 push가 가능해서는 안되겠죠~? 이를 설정하는 방법을 알아보겠습니다.

 

Github에서는 Branch 설정이라는 기능을 제공합니다. 

Github 의 repository에 들어간 뒤 setting -> Branches를 들어가시면 위와 같은 화면을 볼 수 있습니다. 

Default branch 라고 적힌 부분은 기준이 되는 브랜치를 설정하는 것이고, 제가 위에서 말씀드린 branch 설정은 빨간박스로 표시해놓은 Add rule을 통해 설정할 수 있습니다. 

상단에 Branch name pattern 에는 적용시킬 브랜치 명을 작성합니다. 그리고 설명을 보고 브랜치에 적용시킬 설정을 체크하면 됩니다. 

 

현재 제가 진행하고 있는 프로젝트는 다음과 같이 적용을 시켰습니다. 

develop 브랜치 설정

이렇게 적용할 설정을 체크 하고 Create 버튼을 누르면 브랜치에 적용이 됩니다. 

진행중인 프로젝트에는 master와 develop 브랜치 룰을 적용시켜놓은 상태이며, develop 브랜치로 설정하고 action을 만들어 바로 commit하려고 하니 protected branch라는 문구와 함께 새로운 브랜치를 생성하고 pull request를 통해서 merge를 할 수 있도록 되어있는 것을 확인 할 수 있었습니다. 

 

 

댓글