본문 바로가기

Git

Git Flow

목차

  • Git Flow 쓰는 이유
  • Git Flow 란?
  • Git Flow 이해하기
  • Git Flow 명령어

🧑‍💻 Git Flow 를 쓰는 이유

- 만약 1인 개발이고 나중에 개발자가 추가될 일이 없다면 브랜치 관리는 비교적 중요도가 낮습니다.  그러나 회사라면 언제 어떤 개발자랑 같이 일하게 될 지 장담할 수 없죠. 그러니 미리 정해두어야 합니다.

그래서 여러명의 개발자가 좀 더 효율적으로 Git을 사용하기 위해 어떤 방법을 사용하는지 알아볼 필요가 있습니다. (다른 개발자도 알고 있고 나도 알고 있는 유명한 Git을 사용 방법을 써야 적은 비용의 의사소통으로 협업을 할 수 있겠죠!?)

저도 혼자 개발하다가 갑작스럽게 개발자 한 분이랑 같이 일하게 된 적이 있습니다. 본인은 두 달치 개발한 것에 대한 QA를 진행중이었고 그 분은 새로운 기능을 개발하셨습니다. 그 때 기획, 디자인상 공통적인 부분이 있었기에 충돌이 안날수가 없었습니다. ㅠㅠ

그러다가 안되겠다!!!! 이걸 어떻게 해결할 지 고민했고 이런 고민을 동료분께 이야기 했더니 Git flow 얘기해주셔서 공부했던 것을 기록해보려고 합니다.

 

🤔 Git flow 란?

- 여러 개발자가 Git으로 효율적인 형상관리를 하기 위해 생긴 브랜치 관리 전략(Branch management strategy)  입니다. 나온지가 꽤 되었고 팀에 맞게 변형해서 사용하면 됩니다. 이밖에도 github flow, gitLab flow 가 있습니다만 일단 Git flow부터 알아보겠습니다.

 

🚀 Git flow 이해하기

Git flow를 검색해보면 위의 이미지를 쉽게 볼 수 있습니다.

Git flow에는 5개의 브랜치가 있고 각 브랜치마다 담당하는 역할이 있습니다.

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

위의 그림만 보면 잘 모르겠으니 예시를 들겠습니다.

예시) 상황: 로그인 기능 추가 후 배포 예정 (hotfix는 없는것으로 간주)

1. develop 브랜치에서 feature/login 브랜치 생성 (feature-login 등 여러형태로 표현할 수 있는데 팀마다 있는 네이밍으로 정하면 됨. 저는 깃크라켄에서 기본적으로 feature/ 형태로 되어있어서 안바꾸고 그대로 사용했습니다.)

2. feature/login 개발 완료

3. feature/login을 develop로 merge (Pull Request)

4. develop에서 release/x.x.x 브랜치 생성 후 심사 넣기 (안드로이드 or iOS 출시 심사)

5-1. 리젝 되었으면 해당 release/x.x.x 브랜치에서 수정하고 다시 심사에 넣기

5-2. 통과 되었으면 release/x.x.x 브랜치를 master 브랜치, dev 브랜치에 머지

6. master 브랜치에 버전 태깅하기

1 ~ 6 번 반복!

 

📝 Git Flow 명령어

MacOS에서는 homebrow로 git-flow-avh를 설치하여 Git Flow를 쉽게 사용할 수 있습니다.

// Git flow 설치
brew install git-flow-avh

// Git flow 초기화
git flow init

// 기능 개발 시작, 완료 시
git flow feature start <branch name>
git flow feature finish <branch name> // develop으로 checkout 후 병합하며, 해당 브랜치는 삭제

// 릴리즈 시작, 완료 시
git flow release start <branch name>
git flow release finish <branch name>

만약 위의 과정 없이 git flow를 적용해야 한다면? - 브랜치 생성하고 checkout 하고(start) 개발 완료되면 checkout하고 merge하고 브랜치 삭제하고(finish) 많은 명령어를 입력해주어야 합니다. 

 

🖥️ GUI (소스트리, 깃 크라켄 ...)

GUI 쓰면 더 편해집니다. 소스트리나 깃크라켄이 git flow 지원하고 있어서 편하게 클릭 몇번으로 사용할 수 있습니다.

저는 지금 깃크라켄 쓰고 있는데 충돌고치기, git flow, git log graph 보는 것이 특히 편하고 좋네요. 👍
유료이긴 합니다만 결제 후회 안합니다. 

깃 크라켄으로 git flow 설정하는 화면

반응형