git flow 전략

iamsummer__·2021년 8월 30일
0

현재 재직중인 회사에서는 git flow 전략을 사용하고 있습니다.
간략하게 알아보도록 하겠습니다.

git flow란?

브랜치 전략중 하나로 Vincent Driessen이 제안한 아이디어입니다.
관리하는 브랜치는 아래와 같습니다.

master: 제품으로 출시(배포)할 수 있는 브랜치
develop: 다음 버전을 개발하는 브랜치
feature: 단위별로 기능을 개발하는 브랜치 (완료되면 develop 브런치와 병합)
release: 배포 전 (master와 병합 전) QA를 통해 버그를 찾아내기 위한 브랜치
hotfixes: master브랜치에서 발생한 버그를 긴급하게 수정하는 브랜치

👻 언제 사용하면 좋을까??

이전 직장에서는 배포일정이 정기적이기 보다는 서비스 특성상 자주 배포해야하는 상황이었습니다.
그렇다보니 git flow 전략을 실행하기 어려웠습니다.
현 직장은 스프린트 주기 단위로 배포를 하고 있어, git flow 전략을 사용하고 있습니다.

배포일정이 스프린트 단위와 같이 정기적으로 이루어지는 경우 사용하면 좋습니다.

그러나 분명히 단점들도 있습니다.
불필요한 많은 브랜치들을 관리해야하고, 배포 빈도수가 잦은 프로젝트에는 맞지 않습니다.
자세한 내용은 첨부한 포스팅을 통해 확인 가능합니다.

사용방법

저는 주로 커맨드를 사용하고 있지만 소스트리, git kraken 등의 툴로도 쉽게 사용 가능합니다.

git-flow-avh를 설치합니다.

brew install git-flow-avh

그리고 git flow전략을 적용할 프로젝트로 경로를 이동하여 아래와 같이 명령어를 입력합니다.

git flow init // git flow command 를 사용하기 위해 초기 설정을 세팅하는 명령어

엔터를 치고 기본설정을 하시면 되는데,, 여기서 저는 아래와 같이 에러가 발생하더라구요..ㅠ
확인해보니 master, develop브랜치를 만든 후에 시작하면 해결되는 문제였습니다. (당연한 소리..)

git flow feature start [feature브랜치이름] // develop 브랜치 기준으로 feature브랜치 생성
 
// feature브랜치에서 작업 완료 후 커밋
 
git flow feature finish [feature브랜치이름] // feature 브랜치 삭제, develop브랜치로 체크아웃
 
git push // feature브랜치에서 머지된 내용 develop브랜치에 push
 
git flow release start [release브랜치이름] //  develop 브랜치 기준으로 release브랜치 생성 
 
 
git flow release publish [release브랜치이름] // origin release브랜치 푸시
 
 
// QA도중에 버그가 발생하거나 수정해야하는 사항이 있는 경우 bugfix 브랜치 생성해야함
 
git checkout -b bugfix/[브랜치이름] // bugfix 브랜치 생성
 
// 작업 완료 후 커밋 후 다시 release브랜치로 돌아온다.
 
git merge bugfix/[브랜치이름] // bugfix브랜치 머지
 
git push
 
git flow release finish [release브랜치이름] // master/develop 머지(local의 master, develop 최신상태이어야함), tag 생성, release브랜치 삭제
 
 
// develop, matser, tag 푸시
git push origin develop
git push origin master
git push origin [tag이름 = release브랜치 이름] 

만약 hotfix건이 있는 경우는 아래와 같이 합니다.

git flow hotfix start [hotfix브랜치이름] // master 브랜치 기준으로 hotfix브랜치 생성
 
// hotfix 브랜치에서 작업 완료 후 커밋
 
git flow feature finish [hotfix브랜치이름]// hotfix 브랜치 삭제, master브랜치로 체크아웃
 
// develop, matser, tag 푸시
git push origin develop
git push origin master
git push origin [tag 이름]

커맨드로 하다보니, 태그를 생성하고서 master, develop에 머지될때 태그가 머지가 되는 경우가 있었습니다.
찾아보니, 따로 설정을 바꾸거나 생각보다 복잡하더라구요 ㅠㅠ

제가 추천하는 방법은 sourcetree 툴을 사용하는 것을 추천드립니다.
간단하고 git flow전략대로 잘 동작합니다. !!

profile
개발하는 프론트엔드개발자

4개의 댓글

comment-user-thumbnail
2021년 9월 12일

sourcetree Permission denied (publickey)
https://jinnify.tistory.com/73

답글 달기
comment-user-thumbnail
2021년 9월 23일

ssh-add -K ~/.ssh/id_rsa

답글 달기
comment-user-thumbnail
2021년 12월 6일

feature --> develop에 머지 ( 가능한 머지commit X)
develop --> release브랜치 생성
이후 수정은 release브랜치에 머지.

1개의 답글