목차
GitFlow
- 개발자가 많아질 경우 브랜치를 대충 아무렇게나 만들고 merge를 하다 보면 매우 복잡하게 됩니다. 이러한 것을 방지하기 위해 git branch를 깔끔하게 만들도록 도와주는 여러 방법론들이 있습니다.
- GitFlow / Github Flow / Trunk-based / Gitlab Flow
- 이 중 가장 유명한 Git Flow에 대해서 살펴보도록 하겠습니다.
- GitFlow는 아래 5개의 브랜치를 운영하여 프로젝트를 관리합니다.
- main
- develop
- feature
- release
- hotfix
- main 브랜치
- 프로덕션 레벨의 코드가 저장되는 브랜치입니다.
- 프로덕션 레벨(Production Level)이라는 용어는 실제 사용자가 사용하는 소프트웨어의 최종 버전을 의미합니다.
- 릴리스 된 코드만이 이 브랜치에 병합되며, 프로덕션에 배포되는 코드의 출처가 됩니다.
- 항상 안정적이고 실행 가능한 상태를 유지해야 합니다.
- 프로덕션 레벨의 코드가 저장되는 브랜치입니다.
- develop 브랜치
- 개발을 위한 주요 브랜치로, main 브랜치에서 분기됩니다.
- 새로운 기능 개발과 버그 수정이 이루어지는 곳입니다.
- 개발 과정 중 생성되는 모든 기능 브랜치의 기반이 됩니다.
- feature 브랜치
- 새로운 기능 개발이나 실험을 위해 develop 브랜치에서 분기됩니다.
- 기능 개발이 완료되면 develop 브랜치로 다시 병합됩니다.
- 이름은 보통 개발하려는 기능을 반영하여 지정합니다. (ex: feature/new-login-page)
- release 브랜치
- 새로운 프로덕션 릴리스를 준비하기 위해 develop 브랜치에서 생성됩니다.
- 릴리스 준비를 위한 최종 버그 수정, 문서 작업 등을 수행합니다.
- 준비가 완료되면, main 브랜치와 develop 브랜치 양쪽에 병합됩니다.
- hotfix 브랜치
- main 브랜치에서 발생한 긴급한 문제를 해결하기 위해 생성됩니다.
- 긴급한 버그 수정을 진행하고, 수정이 완료되면 main과 develop 브랜치 양쪽에 병합됩니다.
GitFlow 작업 예시
- 어떤 프로젝트(v0.9)를 지금까지 대충 관리하다가 체계적 기능들을 추가하고 v1.0 버전으로 출시하려고 합니다. 이럴 경우 GitFlow에서는 어떤 식으로 브랜치가 관리되게 될까요?
- 1. 먼저 develop 브랜치를 생성
- develop 브랜치를 생성하는 이유는 신기능을 개발하고 바로 main 브랜치에 합치면 안 되기 때문입니다. 어떤 오류가 있을지 모르기 때문에 개발이 되고 나면 develop 브랜치에서 release 브랜치로 분기한 뒤 여러 테스트를 거치고 나서야 main 브랜치에 병합이 진행됩니다.
- 모든 개발은 develop 브랜치에서 진행됩니다.
- 2. 신기능 개발은 feature 브랜치에서 진행합니다.
- 신기능을 만들고 싶으면 develop 브랜치를 복사한 feature 브랜치에서 각각 개발합니다.
- feature/login 브랜치, feature/buy 브랜치 등 기능을 나타내는 이름을 /를 통해 나타낼 수 있습니다.
- 완성되면 develop 브랜치에 merge를 진행하게 됩니다. (중요한 내용이 아니면 squash and merge도 괜찮습니다.)
- 신기능을 만들고 싶으면 develop 브랜치를 복사한 feature 브랜치에서 각각 개발합니다.
- 3. 신버전 출신 준비를 위해 release 브랜치를 생성
- develop에서 만든 2개 기능을 바로 main에 합치지 않고 develop → release 브랜치로 프로젝트를 복사한 다음 출시준비를 합니다.
- 여기서 릴리스 준비를 위한 최종 버그 수정, 문서 작업 등을 수행합니다.
- relases/1.0 이런 식으로 브랜치 이름을 짓는 경우가 많습니다.
- 완성되면 main 브랜치로 merge를 진행합니다.(유저에게 배포) 또한 개발은 계속 진행되어야 하기 때문에 완성본은 develop 브랜치에도 merge를 진행해야 합니다.
- 4. 급한 버그 수정은 hotfix 브랜치 생성
- 배포한 버전에서 심각한 오류가 발생했습니다. 이런 급한 오류들은 main 브랜치에서 hofix브랜치 하나를 만들어서 바로바로 버그를 수정합니다.
- 수정이 완료되면 main 브랜치와 develop 브랜치에 merge를 진행합니다.
- 1. 먼저 develop 브랜치를 생성
- 전체 그림
참고
'ETC > Git' 카테고리의 다른 글
[Git] Git의 기본 (0) | 2024.04.30 |
---|---|
[Git] (정리)혼자서 GitFlow를 따라 프로젝트 진행하기 (1) | 2023.12.18 |
[Git] GitHub 기본 (0) | 2023.12.14 |
[Git] commit 취소하기 (git revert) / commit reset하기 (git reset) (0) | 2023.12.14 |
[Git] Git commit된 파일로 복구하기 (git restore) (0) | 2023.12.13 |