본문 바로가기

✏️

[git] Gitflow Workflow에 대해서 알아보자!

공부를 하다보면 프로젝트를 통해 협업을 경험하는 경우가 있다.
그럴 때마다 git을 통해서 어떻게 협업해 나아갈지, 그리고 배포 이후에 어떻게 관리할지 등 한번쯤 고민해보았을 것이다.

이러한 고민들을 한번에 정리해줄, 우리의 구원자........ ㅋ... 
GitFlow에 대해서 오늘 정리해보고자 한다.


 

GitFlow

GitFlow는 기업에서도 많이 사용하고 있고, 관련해서 문서로 잘 정리가 되어 있으니 한번 읽어보면 좋을 듯 하다.
[우아한 기술블로그] [강남언니 블로그]

보통 GitFlow가 뭐야? 하면, 한번에 설명해주는 이미지가 있다. 

 

얼핏 보기엔 너무 복잡해서, 이해하기 어렵지만, 하나씩 차근차근 살펴보다보면 
와-... 이게 git이지,,, 이게 협업이지... 싶을 것이다.ㅋㅋ

 

 

GitFlow Branch

1. 메인 브랜치 (기본 = 사라지지 않는 브랜치)

- master : 배포 가능한 브랜치 (production 상태와 일치)
이 브랜치의 HEAD는 항상 production 상태와 일치 합니다.

 

- develop : 다음 버전 출시를 위해 개발한 브랜치
이 브랜치의 HEAD는 최신 개발 변경 사항을 제공합니다. 
릴리즈 할 준비가 되면 모든 변경 사항을 master 브랜치에 병합합니다. 

 

 

2. 보조 브랜치 (필요에 따라 생성/삭제 하는 브랜치)

: 병렬 개발을 지원하고, 이를 관리하기 위해 있는 브랜치들
: 기능 개발을 하거나 프로덕션 배포를 준비하고, 라이브 프로덕션 문제를 신속하게 수정하는 등 브랜치를 통해 관리합니다. 


- feature : 기능을 개발하는 브랜치

* branch off from develop : 분기 시작하는 브랜치는 devlelop을 사용합니다. 
* merge back into develop : 개발 완료 후 develop 브랜치로 병합합니다.

git checkout -b feature/{기능 이름 또는 #이슈번호} develop

 

 


- release : 배포를 위해 최종 수정을 하는 브랜치

이 브랜치에서는 주로, 버그수정 및 기타 릴리자 지향 작업만 포함되어야 합니다.

* branch off from develop
 : 분기 시작하는 브랜치는 devlelop을 사용합니다. 
(develop 브랜치가 개발이 새 릴리즈 사항에 대해서 원하는 상태일 때)
* merge back into develop 또는 master
 
: 개발 완료 후 develop/master 브랜치로 병합합니다.

* release-{버전번호} 와 같이 branch 이름 규칙을 갖습니다.

git checkout -b realease/1.2

 


- hotfix : 출시 버전(master)에서 빠르게 패치해야 하기 위해 사용하는 브랜치

: relase 브랜치와 유사, 하지만 master 브랜치에서 분기하는 유일한 브랜치
: hotfix 브랜치를 사용 하면, 긴급하게 수정해야 하는 버그에 대해서 다음 릴리즈 주기를 기다리지 않고, 문제 상황에 대해서 대처 할 수 있습니다.

branch off from master : 분기 시작하는 브랜치는 master을 사용합니다. 
merge back into develop 또는 master
: 개발 완료 후 develop/master 브랜치로 병합합니다.

* hotfix-{버전번호} 와 같이 branch 이름 규칙을 갖습니다.

git checkout -b hotfix/1.2.1 master

 

 

Overall flow 

1. master branch 기준으로 devlop 생성
2. develop branch 기준으로 feature, release 생성
3. 기능 개발이 완료되면, develop 브랜치에 feature 브랜치 merged
4. 릴리즈 준비가 완료되면, master / devlelop 브랜치에 각각 merged
5. 만약 master 브랜치에 이슈가 생기면, hotfix 브랜치 생성 
6. hotfix가 완료되면,  master / devlelop 브랜치에 각각 merged

 

 

 

 

참고.

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html

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

 

 

 

 

'✏️' 카테고리의 다른 글

커밋 메시지  (0) 2021.08.12
[github][slack] 슬랙-깃헙 연동하기 (개인, organization)  (0) 2021.08.04