본문 바로가기

Programming/Git

Git flow 전략 도입기

2024-04-06 ~ 2024-05-21 까지 SSAFY에서 진행했던 
숨구멍 프로젝트에서 Git flow 전략을 도입했던 기록을 남기고자 합니다!

 

우선 Jira를 이용해 1주일간격으로 스프린트를 관리하고 프로젝트를 진행했습니다!

Jira Convention

  • 에픽
    • [BE]
    • [FE]
    • [INFRA]
  • 스토리
    • [BE] api명세서

 

브랜치 전략 - git flow

  • main
    • develop
      • frontend
        • {이슈번호}_{내용}
        • ex) feat/#{이슈번호}-내용
      • backend
        • {이슈번호}_{내용}
        • ex) feat/#{이슈번호}-내용

Git flow를 적용하기에 앞서 Git 컨벤션을 정할 때 우리는 우아한 기술블로그를 참조해 (https://techblog.woowahan.com/2553/ ) 아래와 같은 약속을 했습니다. 

  1. 작업을 시작하기 전에 JIRA 이슈를 생성합니다.
  2. 하나의 이슈는 되도록 하나의 커밋으로 합니다.
  3. 커밋 그래프는 최대한 단순하게 가져갑니다.
  4. 서로 공유하는 브랜치의 커밋 그래프는 함부로 변경하지 않습니다.
  5. 리뷰어에게 꼭 리뷰를 받습니다.
  6. 자신의 Pull Request는 스스로 merge 합니다.

 

 

 

전체적인 흐름은 다음과 같습니다.

처음에는 master와 develop 브랜치가 존재합니다. 물론 develop 브랜치는 master에서부터 시작된 브랜치입니다. develop 브랜치에서는 상시로 버그를 수정한 커밋들이 추가됩니다. 새로운 기능 추가 작업이 있는 경우 develop 브랜치에서 feature 브랜치를 생성합니다. feature 브랜치는 언제나 develop 브랜치에서부터 시작하게 됩니다. 기능 추가 작업이 완료되었다면 feature 브랜치는 develop 브랜치로 merge 됩니다. develop에 이번 버전에 포함되는 모든 기능이 merge 되었다면 QA를 하기 위해 develop 브랜치에서부터 release 브랜치를 생성합니다. QA를 진행하면서 발생한 버그들은 release 브랜치에 수정됩니다. QA를 무사히 통과했다면 release 브랜치를 master와 develop 브랜치로 merge 합니다. 마지막으로 출시된 master 브랜치에서 버전 태그를 추가합니다.

 


 

저희는 실제로 Git-flow를 이렇게 적용했습니다

저희는 Backend 소스 파일과 Frontend의 소스 파일이 한 gitLab에서 공유 및 관리 되고 있기 때문에
통상적으로 사용되는 develop 브랜치의 역할을 하는 backend 폴더와 frontend 폴더가 따로 관리되어야 된다고 생각했습니다.

 

Back과 Front의 작업이 완료되면 각각의 backend, frontden 폴더에 병합 후, 기능을 통합해 develop 브랜치에 merge 하는 식으로요.

 

main 브랜치는 배포 버전이 달라질때만 사용하자고 결정했습니다. 

develop 브랜치

 

frontend 브랜치

backend 브랜치

Git flow 전략을 통해 모놀리식한 폴더 구조 내에서 
Backend 파트와 Frontend 파트는 각자 독립적으로 개발할 수 있었습니다!

 


Git flow 도입 후기 

처음에는 새로운 Git 컨벤션 모델에 익숙해지는 데 시간이 조금 필요했습니다. 
브랜치 간 병합 작업이 복잡하다고 느꼈고 실수도 많았으나

익숙해진 이후에 느낀 장점은 

 

  • 여러 명이 동시에 여러 기능을  feature 브랜치에서 독립적으로 명확하게 나누어 개발할 수 있었습니다.
  • 브랜치 병합 시 충돌을 최소화 할 수 있었습니다.
  • 태그 등의 체계적인 브랜칭 모델을 통해 변경 이력을 쉽게 추적할 수 있었습니다.

변경사항 추적과 충돌 최소화.
그리고 무엇보다 통합브랜치에 변경 내용을 올리기 전에 확인할 수 있다는 점이 안정성에 기여하는 바가 컸습니다.

 

이후 어떤 프로젝트를 진행하더라도
Git flow 전략을 사용하는 것이 좋을 것 같고,

 

프로젝트를 진행함에 있어서
더 안정적이고, 협업에 도움되는 전략들을 더 많이 적용해 봐야겠습니다.