본문 바로가기
혼자 공부하는 것들

Git-flow를 사용해보자!

by applepick 2021. 5. 20.
반응형

회사에서 서비스 기능을 구현하기 위해 git develop 브랜치에 올리려고 했습니다.
전 게시글에서 보았듯이 develop 브랜치는 다음 버전을 개발하는 브랜치라서 잘못 올렸다가는 master에 merge가 되어 배포될 수 있습니다. 이런 리스크를 줄이기 위해 다양한 방법들을 찾아보던 중 git-flow기법을 찾아보았습니다.
우아한 형제들에서도 git-flow를 사용하여 버전 관리를 한다고 합니다. (밑 블로그 참고)
https://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html

 

우린 Git-flow를 사용하고 있어요 - 우아한형제들 기술 블로그

안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다.오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합니다. ‘배달

woowabros.github.io


그러면 Git-flow란 무엇인가?
버전 관리 기능은 아니고 방법론에 속합니다. Git-flow에는 5가지의 브랜치가 존재합니다.
항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있습니다.

  • master : 제품으로 출시될 수 있는 브랜치
  • develop : 다음 출시 버전을 개발하는 브랜치
  • feature : 기능을 개발하는 브랜치
  • release : 이번 출시 버전을 준비하는 브랜치
  • hotfix : 출시 버전에서 발생한 버그를 수정하는 브랜치

필자가 필요한 기능은 하나의 기능을 구현하기위해서 브랜치가 필요하기 때문에 feature를 사용했습니다.

위 그림을 일반적인 개발 흐름으로 보여줍니다.(절대적인 것은 아니다.)
처음에는 master와 develop 브랜치가 존재합니다. develop브랜치는 master 브랜치에서부터 시작된 브랜치이고, develop 브랜치에서는 상시로 버그를 수정한 커밋들이 추가. 새로운 기능 추가 작업이 있는 경우 develop 브랜치에서 feature 브랜치를 생성. feature 브랜치는 언제나 develop 브랜치에서부터 시작하게 됩니다. 기능 추가 작업이 완료되었다면 feature 브랜치는 develop 브랜치로 merge 됩니다. develop에 이번 버전에 포함되는 모든 기능이 merge 되었다면 QA를 하기 위해 develop 브랜치에서부터 release 브랜치를 생성. QA를 진행하면서 발생한 버그들은 release 브랜치에 수정. QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 합니다. 마지막으로 출시된 master 브랜치에서 버전 태그를 추가합니다.

이제 git-flow를 간단하게 보았다면
한번 사용해보겠습니다.
Mac을 기준으로

brew install git-flow-avh

다운을 받아준 다음

git flow init (브랜치의 이름 지정) // init 뒤에 -d를 입력하면 기본값으로 입력된다.

저장소를 초기화시켜줍니다. 만약 공백으로 입력 시 기본값으로 저장됩니다. 필자는 feature으로 브랜치가 필요해서 feature로 했습니다.

git flow feature start <feature name>

이렇게 하면 feature/<feature name>으로 브랜치가 파 지기 때문에
만약 feature/를 없애고 싶다면 git flow init -f을 하고 설정으로 모든 브랜치에 -를 입력하면 됩니다.

브랜치의 이름을 바꾸고 싶다면

git branch -m <oldname> <new name>

이렇게 사용하면 브랜치의 이름과 디렉터리가 설정됩니다.
여기서 기능 구현을 다 마치면 feature 브랜치를 develop 브랜치에 병합하면 됩니다.

git flow feature finish <featurename>

를 사용하면 됩니다.

이렇게 git-flow를 사용하여 브랜치를 활용하는 방법을 알아보았습니다… 버전 관리를 잘해야 가독성도 좋고 관리할 때도 깔끔하다고 느꼈습니다.

반응형

댓글