[GIT] Git-flow 사용하기

2020. 11. 9. 07:28Git

반응형

Git Flow란 무엇일까요?

여러분들은 브랜치을 생성해서 각 작업 단위들을 구분해본적이 있나요.

Git Flow란 바로 이 브랜치 흐름을 표준화시킨 방법(?) 같은 것입니다. 일종의 Branch을 나누는 기법입니다.

이 기법에 따른 브랜치를 보면 5가지가 있습니다.

  • master : 배포가 된 공식적인 이력을 저장하는 브랜치입니다. 즉, 최종적으로 App Store에 올라가 있는 이력이 저장되어 있습니다.
  • develop : 여기서는 통합적인 개발을 진행하는 브랜치입니다. 즉, master 브랜치로부터 나와서 새로운 기능들을 개발해나갑니다.
  • feature : 기능을 단위로 개발을 진행하는 브랜치입니다. 즉, develop으로부터 나와서 각 단위의 기능을 개발해나갑니다.
  • release : 배포할 준비가 완료되고 내부적으로 완성이 된 경우에 QA을 위해 나온 브랜치입니다. develop으로부터 뻗어나와서 QA을 진행하고 버그들을 수정해나갑니다.
  • hotfix : master 브랜치로 배포를 완료했는데 긴급하게 버그가 생긴 경우 수정을 진행하는 브랜치입니다.

이 흐름을 그림으로 보면 다음과 같습니다.

이 그림의 흐름으로 진행되는데 예로 들어서 설명을 해보겠습니다.

 

먼저 0.1v까지 배포가 완료된 상태이고 이제 새로운 기능을 개발하는 상황입니다.

 

 

1. 0.1v master로부터 develop 브랜치를 생성한다.

2. develop 브랜치로부터 각자 맡은 역할의 feature 브랜치를 생성한다.

3. 나는 feature/login-layout, 다른 팀원은 feature/signup-layout에 대해 생성하고 작업을 진행한다.

4. 여기서 모든 개발 사항을 develop으로 통합한다.

5. develop 브랜치로부터 0.2v 릴리즈 준비가 완료되어서 release/0.2 브랜치를 생성한다.

6. QA을 진행하고 버그 사항들을 release/0.2에서 지속적으로 수정한다.

7. 최종적으로 확인 후, 배포하고 master 브랜치로 병합한다.

 

이런 흐름으로 브랜치 전략을 세우고 협업하는 방법인 것 같습니다.


Git Flow 사용하기

맥을 사용한다는 기준 하에 작성하도록 하겠습니다.

 

맥을 사용한다면 homebrew를 사용해 쉽게 git-flow을 다운받을 수 있습니다.

$brew install git-flow

완료가 되었다면, 로컬 저장소의 프로젝트 폴더에 git flow init 명령어를 실행합니다.

이렇게 실행하면 일련의 설정을 해야한다.

 

설정이라 함은 앞에서 정의한 5가지의 브랜치에 자신만의 브랜치 이름을 커스텀할 수 있다.

그냥 사용하고 싶다면 git flow init -d로 실행한다.

 

이렇게 사용하면 위의 기본적인 브랜치들이 자동으로 생성됩니다.

처음엔 main, develop 브랜치만 생성됩니다.

 

이제부터 설정은 완료되었고 개발을 진행하며 git-flow을 사용할 수 있습니다.

 

 

Git-flow Feature 사용하기

 

특정 브랜치 개발을 위한 feature을 생성해야할 때 사용할 수 있는 기능입니다.

// 기능 브랜치 생성하기 => feature/login-layout
// 이렇게 생성이 됩니다.
$git flow feature start <feature name>

// 기능 브랜치 병합하기
// 자동으로 develop을 기준으로 해당 브랜치를 병합한다.
// 이후 해당 브랜치를 삭제한다.
$git flow feature finish <feature name>

만약 다른 개발자와 같이 작업을 진행 중이라면 develop에 바로 반영하는게 힘들기 때문에, origin으로 업로드하는 방법도 있습니다.

// 해당 브랜치를 origin에 push한다.
$git flow feature publish <feature name>

// 해당 브랜치를 origin으로부터 pull한다.
$git flow feature pull origin <feature name>

 

 

Git-flow Release 사용하기

 

릴리즈를 준비하기 위해 다음과 같이 실행하면 사용할 수 있습니다.

// 해당 버전으로 release/<vesion> 브랜치 생성
$git flow release start <version>

// 해당 버전의 릴리즈를 종료합니다.
// release 버전으로 tag을 달고 master로 병합
// release 브랜치를 develop, master에 병합한다.
// release 브랜치를 삭제한다.
$git flow release finish <version>

// master 브랜치를 origin으로 푸쉬 후, tag도 같이 push한다.
$git push --tags

여기서도 다른 개발자와 개발하기 때문에 release 브랜치에 다른 사람의 내역을 반영할려면

// 해당 버전을 origin에 브랜치를 생성한다.
$git flow release publish <version>

 

현재 프로젝트에서 git-flow을 활용해 협업을 해보기 위해 간단하게 git-flow에 대해 포스팅을 해보았습니다 🤗


참고 레퍼런스

 

반응형

'Git' 카테고리의 다른 글

[Git] Git Stash 사용하기  (0) 2021.05.15
[Git] Git merge 전략 (merge, rebase merge, squash merge)  (0) 2021.04.11
[GIT] Github-flow 사용하기  (0) 2021.01.27
[GIT] Merge vs Rebase 차이  (8) 2020.09.20