dev-sohee 님의 블로그

Git Flow: 소프트웨어 개발의 새로운 표준 본문

CS

Git Flow: 소프트웨어 개발의 새로운 표준

dev-sohee 2024. 10. 5. 14:34

Git Flow는 Git을 기반으로 한 브랜치 관리 모델로, 소프트웨어 개발에서 효율적인 버전 관리와 협업을 위해 등장했습니다. Git이 등장하기 전의 버전 관리 시스템(VCS)은 여러 개발자가 동시에 작업하는 데 제한이 있었고, 분기 관리가 불편했습니다. 소프트웨어 개발이 복잡해짐에 따라 여러 기능을 동시에 개발하고, 버그를 수정하며, 릴리스를 관리하는 일이 점점 더 어려워졌습니다. 팀원들이 동시에 작업할 때 충돌을 방지하고 체계적으로 관리할 수 있는 방법이 필요했습니다.  Git Flow는 이러한 요구를 충족하기 위해 만들어졌습니다.

 

출처_https://github.com/pknu-wap/git-flow-seminar/blob/master/README.md

 

 

Git Flow에서는 총 5개의 브랜치를 사용합니다. 각 브랜치에 대해 간단하게 알아보도록 하겠습니다.

**브랜치란? : Git에서 코드의 독립적인 작업을 수행할 수 있도록 만들어진 분기점입니다. Git은 버전 관리 시스템으로, 브랜치를 사용하여 여러 개발자가 동시에 작업하면서도 서로의 변경 사항에 영향을 주지 않도록 합니다.

  • master: 항상 배포 가능한 상태를 유지하며 실제 제품이 배포되는 브랜치입니다. master에 머지가 된다는 것은 프로덕트에 적용하는 것을 의미합니다. 
  • develop: 다음 릴리스를 위한 통합 브랜치입니다. 모든 기능 개발이 완료되면 이 브랜치에 머지됩니다.
  • feature: 새 기능을 개발하는 브랜치입니다. 
  • release: 실제 프로덕트로 배포하기 전에, 최종 점검을 하기 위한 브랜치입니다. 
  • hotfix: 배포된 버전에서 발생한 긴급한 버그를 수정하기 위한 브랜치입니다. 

 

위의 그림으로는 각 브랜치의 기능과 전체적인 흐름에 대한 감이 잘 안올 수 있습니다. 아래 그림은 기존에 있는 레포지터리에 새 기능을 추가할 때 사용하는 Git Flow 시나리오입니다.

출처_https://shinsunyoung.tistory.com/127

 

develop에서 feature 브랜치를 생성하고, 기능 개발이 끝나면 develop에 머지합니다. 그 이후에 develop을 베이스 브랜치로 release 브랜치를 생성하게 되는데 만약 QA 과정 중에 버그가 발생한다면 release 브랜치에서 fix한 후 커밋합니다. 그 이후 QA가 종료되면 release를 masterdevelop으로 각각 머지합니다. 그 이후에 master에서 버전을 태깅하고 배포합니다.

 

다음은 버그 수정에 대한 시나리오입니다. 프로덕션에서 버그가 발생되어 버그를 수정하는 경우에는 hotfix 브랜치를 사용합니다.

출처_https://shinsunyoung.tistory.com/127

 

master에서 hotfix 브랜치를 생성하고, 해당 브랜치에서 버그를 픽스한 후에 master, develop으로 각각 머지합니다. 그 이후에 master에서 버전을 태깅하고 배포합니다. 

 

 

Git Flow의 가치

  • 구조적이고 명확한 브랜치 관리: Git Flow는 기능 개발, 릴리스 준비, 긴급 수정 등 각 작업의 목적에 맞게 브랜치를 나누어 관리할 수 있도록 해줍니다. 이는 작업 흐름을 명확히 하고 혼란을 줄입니다.
  • 효율적인 협업: 여러 개발자가 독립적으로 작업할 수 있어, 팀원 간의 충돌을 최소화합니다. 각자 작업한 내용을 쉽게 통합할 수 있습니다.
  • 릴리스 및 버전 관리의 용이성: 릴리스를 준비하고 버그를 수정하는 과정이 체계화되어 있어, 배포 준비와 안정성을 높일 수 있습니다. 특정 버전의 기능과 수정 사항을 명확히 관리할 수 있습니다.
  • 재사용성과 확장성: Git Flow는 기존에 작업한 브랜치를 기반으로 새로운 기능이나 수정 작업을 쉽게 진행할 수 있게 해주며, 팀이 성장함에 따라 프로세스를 확장할 수 있습니다.
  • 문서화와 기록 유지: 각 브랜치는 특정 목적과 이력을 가지고 있으므로, 프로젝트의 변화 과정을 명확히 기록할 수 있습니다. 이를 통해 문제 발생 시 원인을 추적하고 해결하기 용이합니다.

 

Git Flow는 브랜치 관리에 대한 명확한 구조를 제공하여, 복잡한 프로젝트에서도 각 작업의 목적을 분명히 할 수 있다는 점과 새로운 기능이나 버그를 수정할 때, 기존의 작업 흐름을 방해하지 않고 안전하게 개발할 수 있다는 점이 가장 큰 장점입니다. 이를 통해 프로젝트의 진행 상황을 쉽게 파악할 수 있고 문제 발생 시 빠르게 원인을 찾는 데 큰 도움이 됩니다. 보통 머지할 때는 Request를 만들어서 개발자들간에 코드 리뷰를 하는데 코드 리뷰와 관련된 팁들도 추후에 알아보겠습니다. 

'CS' 카테고리의 다른 글

문자 인코딩의 진화, ASCII, 유니코드, UTF-8, UTF-16  (0) 2024.07.19