git

git flow / git branch 관리하기

Oscar:) 2024. 3. 13. 00:16

 

 

 

이번 포스팅에서는 git flow에 대해 알아보겠다.

 

 


 

 

git flow 란?

 

 

git flow를 알아보기 전,

git에 대한 이해가 부족하다면 이전 포스팅을 참고하기 바란다.

 

 

git 이란 무엇일까? / git 을 사용해보자

✅ git이란 무엇일까? ● 리누스 토르발스가 개발한 버전 관리 시스템 * 리누스 토르발스 : 리눅스 창시자 버전 관리 시스템이란, 소스 코드를 보다 효율적으로 관리하기 위한 시스템이다. 문서

oscarstory.tistory.com

 


 

 

*flow : 흐름

git flow는 git에서 제공하는 브랜칭 기능을 관리하는 전략이라고 볼 수 있다.

 

 

git flow는 다음 5가지 브랜치를 사용한다.

 

  • main(master) : 사용자들에게 배포된(배포할) 브랜치
  • release : QA 작업 등이 이루어지는 main 브랜치로 병합하기 직전의 최종 브랜치
  • develop : 개발 단계의 최상위 브랜치 (각 feature를 통합 저장하는 브랜치)
  • feature : 기능 개발을 목적으로 하는 브랜치
  • hotfix : 배포 후 또는 직전에 버그가 발견되면 즉각 대응을 목표로 하는 브랜치

 

대략적인 느낌을 그림으로 보자.

 

 

 

각 브랜치에 대해 위에서 설명한 내용을 비교하며 보겠다.

 

main 브랜치는 프로젝트 생성 · 배포 단계가 아니면 건드릴 일이 없다고 보면 된다.

대부분의 작업은 develop 브랜치에서 이루어지며,
develop 브랜치를 feature 브랜치로 세분화해서 작업한다고 생각하면 된다.

feature 브랜치는 주로 기능·이슈 단위로 분기되며,
위 그림처럼, 필요에 따라 feature 브랜치를 더욱 세분화하기도 한다.

feature 브랜치에서 기능 단위의 작업이 끝나면 develop 브랜치로 병합한다.

개발 단계가 끝나면 develop 브랜치에서 release 브랜치로 병합하고
버그를 찾는 등의 테스트 과정(QA)을 진행한다.

release 브랜치에서 별 이슈가 없다면 main 브랜치로 병합하고 배포하게 된다.

이미 배포한 상태에서 치명적인 버그가 발견된다면,
main → develop → feature → develop → release → main 과정을 생략하고
hotfix 브랜치로 분기하여 버그 수정 후 곧바로 main으로 병합하는 즉각 대응이 이루어진다.

 

 

 

git flow를 적용했을 때의 전체적인 흐름은 위와 같다.

 

사실 위 케이스는 5가지 브랜치를 모두 사용할 경우를 표현한 것일 뿐이고,

위 5가지 중 main · develop 브랜치만 의무적으로 사용한다고 생각하면 된다.

 

다른 브랜치들은 각자의 상황에 맞게끔 선택적으로 사용해주면 된다.

 

 


 

git flow 사용법

 

 

git flow는 사실 방법론이다.

위 이론만 가지고 각자 스타일대로 적용해도 무방하다.

 

하지만 git의 확장 기능으로서 편의 기능을 제공해 주는데

이를 간단히 사용해보자.

 

 

 

✅ git flow 초기화

$ git flow init -d

 

git flow를 사용할 위치에서 위 명령어를 입력해준다.

 

 

 

 

✅ 브랜치 생성 + 이동

$ git flow feature start <branch name>


// git flow를 사용하지 않았을 때의 기존 과정
$ git branch <branch name>
$ git checkout <branch name>

 

feature 브랜치 생성과 동시에 해당 브랜치로 이동된다.

 

위에도 주석으로 설명했지만,

사실 git flow를 사용하여 2줄 짜리 명령어를 1줄로 축약한 것이나 다름없다.

 

 

 

 

✅ 브랜치 이동 + 병합 + 삭제

$ git flow feature finish <branch name>


// git flow를 사용하지 않았을 때의 기존 과정
$ git checkout <merge할 branch name>
$ git merge <branch name>
$ git branch -d <branch name>

 

Default 브랜치로 이동함과 동시에 병합되며,

feature 브랜치는 자동으로 삭제된다.

 

위와 마찬가지로, 3줄짜리 명령어를 모두 수행해준다.

 

 

 

 


 

 

 

오늘은 git flow에 대해 알아보았다.

더 많이 사용해보고 익숙해져야 할 것 같다.

 

 

 

'git' 카테고리의 다른 글

GitHub란 무엇일까? / GitHub Service  (4) 2023.08.16
git 이란 무엇일까? / git 을 사용해보자  (0) 2023.08.14