본문 바로가기

프로젝트

[협업] Git-flow 방식의 협업을 알아보자.

Git Flow가 무엇인지 알아봅시다.

Git flow의 시작

여러분, Git과 Github에 대해 많이 알고계신가요?
학부생인 저도 들어본적은 있지만 제대로 프로젝트에 적용해본적이 없습니다...ㅜㅠ 공부가 덜된거죠 (반성해라!!!ㅠ)
그래서 블로그에 포스팅할 겸 제대로 이해하고 알아보는 시간을 가질까 합니다. 제가 정리한 내용이 포스팅을 보시는 여러분들까지 도움이 되었으면 좋겠네요 :)

자, 그럼 시작해 봅시다!

Git-flow는 10년전 쯤 Vincent Driessen이라는 사람의 블로그로부터 퍼지기 시작했다고 합니다. VCS(Version Control System)의 일종인 Git을 활용한 개발에서는 표준방법론과 같다고 합니다.
즉, Git을 사용한 프로젝트 방법론이라는 것이죠. 물론 완벽하지 않습니다. 개인의 개발환경, 프로젝트의 진행환경과 상황에 따라 알맞게 변형하여 사용하면 된다고 하네요.

Git flow의 이해

Git flow는 기본적으로 5가지 git branch를 이용해 운영하게 됩니다.

  • master(main) : 기준이 되는 브랜치로 주로 완성된 내용이 배포할 때 사용됩니다. 요 브랜치를 제외하곤 나머지는 상황에 맞게 변경하면 됩니다!
  • develop : 개발브랜치로 각 파트별, 담당별 개발자들이 요 브랜치를 기준으로 작업하고 요게 합쳐져서 배포가 이루어집니다.
  • feature : 단위기능을 개발하기 위해 나눈 브랜치입니다. 개발이 완료되면 develop 브랜치에 합쳐집니다.
  • release : 기능개발이 끝나고 배포를 위해 master(main) 브랜치로 넘어가기 전에 QA를 하기위한 브랜치입니다.
  • hotfix : master(main) 브랜치로 배포를 했는데 이후 버그가 발생했을 때 수정하기 위한 브랜치입니다.
    git-flow img

제가 이해한대로 절차를 설명해보겠습니다 -!

  • Github에서 project(repo)를 만들고 master(main) branch를 기준으로 시작합니다.
  • master(main) branch를 기준으로 프로젝트에 맞게 develop branch를 생성합니다. 담당개발자들은 각 영역의 develop branch에서 개발을 하게 됩니다.
  • 개발진행도중 기능구현이 필요한 상황이 발생하면 기능구현이 되는 영역의 develop branch로부터 feature branch를 생성해 단위기능을 개발합니다.
  • 단위기능개발이 완료되면 검토후 파생된 develop branch에 합칩니다.
  • 위 3단계를 반복해서 기능개발을 해나갑니다.
  • 모든 기능개발이 완료된 경우 develop branch에서 release branch를 하나 만들고 QA를 진행하면서 보완점을 수정하고 버그픽스를 진행합니다.
  • QA와 버그픽스까지 완료된 이후 release branchmaster(main) branchdevelop branch로 보냅니다.
  • master(main) branch에서 버전추가를 위한 tag를 생성하고 배포합니다.
  • 배포이후 새로운 버그를 발견하거나 발견하지 못한 버그가 파악될 경우 hotfix branch를 만들어 수정후 태그를 생성하고 수정배포를 진행합니다.

Git flow의 적용

저도 사이드 프로젝트를 진행하면서 제대로 된 git flow방식을 적용해본적이 없습니다...
무형적인 방법론이기도 하고 실제로 적용되는 선례를 파악하기가 어려운..? 느낌때문에 개인적으로 적용시키기 불안했나싶습니다.
그래도 한번 적용시켜보려 노력하니 막상 별거 아니더군요. 포스팅을 하는 현 시점에서 진행중이던 "Syncer-Bell"이라는 프로젝트가 있습니다.
처음으로 git-flow를 적용시킨 프로젝트인데 아직 진행중이지만 제가 적용한 사례를 소개해 보려고 합니다.
(저도 선례가 없어서 힘들었으니까요!ㅎㅎ)

구성은 다음과 같습니다.

  • main branch : 배포를 담당할 메인 브랜치입니다.
  • develop_FE ; 프론트엔드 개발자가 담당할 개발 브랜치입니다.
  • develop_BE : 백엔드 개발자가 담당할 개발 브랜치입니다.
  • feature_xxxx : 그때그때 단위기능을 개발하는데 사용한 브랜치입니다.
  • release : 현재시점 진행중인 관계로 아직 만들지 않았지만 개발종료후 만들게획입니다.
  • hotfix : 배포후 버그가 발견되면 만들어서 운영해보려합니다.

솔직히 맞는방식인지 아직도 불확실하지만 FE와 BE개발 담당자가 각기 다른 develop branch를 운영하고 feature branch가 필요할 경우 각 develop branch를 feature branch로 보내서 공동작업하고, 개발이후 다시 불러오는 식으로 작업중에 있습니다.
처음 시도하는것이고 나름 이해한대로 운영해보려고 하는데 맞는가 모르겠네요,,
혹시나 방식이 잘못되었다면 댓글써주세요! 저도 알고싶어요ㅜㅠ😂😂

앞으로도 git을 이용한 협업방식인 git-flow를 많이 애용할 것 같습니다. 이제는 요런 방식이 편하더라구요ㅎㅎ