요약: 이 글은 Git-flow가 필요한 이유와 어떻게 진행되는 지에 대한 내용을 다루고 있습니다.
새로운 프로젝트를 들어가기에 앞서 기획 회의를 마친 후 협업 방식에 대해 정하는 중에 튜터님께서 Git-flow를 사용하는 것이 좋은 방식이라고 알려주셨다. 튜터님은 우아한 기술 블로그의 우린 Git-flow를 사용하고 있어요를 참고하여 Git-flow에 대하여 설명해주셨다.
어떤 프로젝트를 진행하든지 기능이 추가됨에 따라 작업량이 늘어나기 때문에 개발 인력을 늘려 협업을 진행한다. 각 개발자들은 본인이 맡은 역할에 맞게 작업을 진행하고 이는 우선 순위에 맞게 분류하여 처리해야한다. 이렇게 기능 구현 및 적용을 효율적으로 관리하기 위해 Git-flow를 사용하는 것이 협업에 도움이 될 수 있다.
Git-flow에는 5가지 종류의 브랜치가 존재한다. 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있다.

먼저 master와 master에서 시작된 develop 브랜치를 생성한다. develop에서는 상시로 발생한 버그에 대해 커밋이 추가된다. 새로운 기능을 추가하는 경우 develop에서 feature 브랜치를 생성하여 작업을 진행한다(예시 feature/CharacterMovement). 기능 추가 작업이 완료되면 develop 브랜치로 해당 feature 브랜치를 merge한다. 각 feature들이 모두 merge되면 QA를 위해 release 브랜치를 생성한다. QA에서 발생한 버그들을 release 브랜치에서 수정하여 최종 QA를 통과하면 develop 브랜치에 merge한다. 최종적으로 버전 tag를 추가하여 master 브랜치에 merge하여 하나의 flow가 완성된다.
본 프로젝트에서는 브랜치를 main, develop, feature 이렇게 총 3단계로 구성하여 Git-flow를 진행할 계획이다. 기능을 추가할 때마다 "feature/기능"과 같은 방식으로 브랜치를 생성하여 작업을 진행한다. 작업이 끝나고 feature 브랜치에 대해 pull request를 작성하여 팀원들과 리뷰한 뒤 develop으로 merge를 진행한다. 최종적으로 프로젝트가 버그 없이 잘 돌아갈 때 main 브랜치에 merge하여 시연 영상을 만들 계획이다.