logo
한달 포트폴리오 멘토링
블로그

Git Flow는 Vincent Driessen가 만든 Git Branch 관리 전략입니다.

Git Flow는 기능별로 Git을 관리하기 쉽고, 스크럼 프로세스에서 칸반보드와 같이 사용하기 매우 유용하고 CI/CD와도 통합하기 좋기 때문에 많은 회사들이 사용하고 있습니다.

GitFlow

GitFlow에서는 소프트웨어의 상태에 따라 브랜치를 분리하는 전략을 가지고 있습니다.

  • feature/{}: 개발자가 특정 기능을 개발할 때 사용하는 브랜치입니다. feature/{칸반티켓이름} 형태로 브랜치를 만든 후, 티켓 기능을 구현합니다.
  • develop: 개발 브랜치입니다. feature 브랜치가 완료되면 develop에 머지됩니다.
  • release: 배포전에 머무는 브랜치입니다. release 브랜치의 코드를 바탕으로 QA팀에서 QA를 수행합니다.
  • master(혹은 main): 실제 서비스로 런칭될 코드가 런칭되는 브랜치입니다.
  • hotfix: 긴급 패치가 필요할때 사용하는 브랜치입니다. hotfix에서 수정된 내용은 develop과 master에 동시에 머지됩니다.

Gitflow 사용시 브랜치 생성은 master -> develop -> feature 순서로 생성됩니다. 코드 통합은 역으로 feature -> develop -> release -> master 진행이 되게 됩니다. 칸반보드의 각 티켓은 feature 브랜치로 변환 됩니다.

Gitflow의 장점

** - 독릭적인 개발 환경 **Gitflow 사용시 기능(티켓) 단위로 독립적인 Branch를 만들기 떄문에 다른사람의 개발 결과에 영향을 받지 않는 독립적인 개발환경을 만들어줍니다. 이는 최소한의 방해로 개발을 할 수 있게 도와줍니다. ** - 쉬운 추적 **Gitflow의 feature 브랜치는 칸반 보드의 티켓과 연동이 됩니다. 칸반 보드를 보고 어떤 기능이 통합되었는지 확인이 가능하며, 오류 발생시 어떤 기능을 개발하닥 문제가 생겼는지 확인하고 쉽게 UNDO 할 수 있습니다. **- 배포 정책 및 CI/CD 연동 **Branch 별로 역할이 분리되어있기 때문에 각 Branch의 update에 맞춰 배포 & 테스트를 하기에 용이합니다.

예를 들어

  • feature 브랜치를 업데이트 하면 unittest를 실행
  • develop에 머지리퀘스트 발생시 inteagration test와 slack 메세지 발송
  • develop 브랜치가 업데이터되면 개발 서버 배포 및 interation test 실행,
  • release 브랜치 배포시 relase 서버 배포 및 QA 팀에 메일로 전달
  • master 배포시 실 서버 배포

CI/CD 관련 내용이 궁금하면 이전 포스팅을 확인해주세요

GitFlow 사용 Tip

머지 스트레스 최소화 하기

gitflow 사용시 Merge 스트레스를 최소화 하기 위해서는 develop 브랜치가 업데이트 될때 마다 자신의 feature 브랜치에 develop 브랜치를 머지해줍니다. 이렇게 하면 나중에 자신의 feature 브랜치를 develop에 머지할때 충돌 없이 머지할 수 있습니다.

Merge대신 Rebase 사용하기

Merge대신에 Rebase를 사용하면 한줄로된 이쁜 그래프를 볼 수 있습니다. git flow를 사용하면 필연적으로 브랜치가 굉장히 많아지고 복잡해 지기 때문에 추후 추적을 위해서 rebase를 사용하는 것이 관리에 유용합니다.

다만 merge에 비해서 충돌시 해결이 어렵기 때문에 git flow를 처음 적용하는 팀일 경우 merge로 먼저 시작해보는 것을 추천드립니다. Merge Rebase 자신이 현재 작성하고 있는 Branch에서 develop 브랜치로 rebase한다음에 develop 브랜치에 머지를 하게 되면 깔끔한 commit tree를 볼 수 있습니다.

PortfolioAD
관련있는 글

couchcoding

2022-12-07

CI/CD란 무엇일까 (feat. gitflow 정책 연계)

CI는 Continuous Integration, CD는 Continuous Delivery의 약자입니다. 한국말로 하면 계속되는 통합, 계속되는 배달(배포)라는 뜻이죠. 그렇다면 공통되는 단어인 Continuous는 어떤 의미로 쓰이고 있을까요? ...

개발 도구

CI/CD
git
git flow
github actions
배포

couchcoding

2022-12-07

[CI/CD] Github Actions으로 내 포트폴리오에 CI/CD를 적용하기

Github Actions 는 Github에 내장된 CI/CD 도구입니다. Github에 내장되 있는 CI/CD라 github와 통합이 쉽고, CI/CD 서버가 내장 되어 CI/CD서버를 따로 구축할 필요 없으며, 일정 수준까지 가격이 무료 라서 개인 프로젝트를 수행할...

개발 도구

CI/CD
git
git flow
github actions
배포

couchcoding

2022-12-07

포트폴리오(개발 프로젝트) 제작시 도움이 되는 도구들 - 1 (프로젝트 관리 & 디자인)

이번 포스팅에서는 이러한 개발 과정을 돕기 위해 개발 포트폴리오 단계별로 유용한 도구를 소개하려고 합니다. 먼저 협업을 위한 메신저, 프로젝트 관리 툴, 화면 기획 & 디자인에 사용할 수 있는 도구들을 소개하겠습니다. 다음 포스팅에선 설계 및 배포를 위한 다양한 툴들을...

개발 도구

협업도구
프로젝트 관리
화면 기획
디자인 도구
slack
notion
trello
github
whimsical
figma

couchcoding

카우치코딩 공식 계정입니다.