-
Branch 전략에 대해서카테고리 없음 2023. 11. 7. 12:20
Branch 전략에 대해서 알아보자
Branch 전략이란?
- Git Branch 전략이란, 말 그대로 Git Branch들에 전략, 즉 규칙을 부여하는 것
각 Branch는 어떤 Branch를 생성할지, 어디에서 생성할지 (분기할지), 어디로 병합할지
각 Branch에 규칙을 정해놓고 지키면서 개발하는 것많이 쓰이는 Branch 전략에는 Git Flow, Github Flow가 있다.
1. Git Flow
위의 그림은 Git Flow 브랜치 전략을 설명한 그림이다.
처음 그림을 봤을 때는 복잡해 보이지만 실상 알고보면 크게 별거 없다 (아마?)
- main 브랜치: main (또는 master) 브랜치는 안정된 배포 버전
- develop 브랜치: 개발 중인 기능들을 통합하는 중간 브랜치
- feature 브랜치: 새로운 기능을 개발할 때마다 새로운 feature 브랜치를 만들고 해당 기능을 개발
- release 브랜치: 배포 전 마지막 정리 및 버그 수정을 수행
- hotfix 브랜치: 실제 배포에서 발생한 긴급한 버그 수정을 수행
각 브랜치들은 이런 역할들을 가지고 있고, feature > develop > release > hotfix > main(master) 순이다.
5가지 중 항시 유지되는 메인 브랜치 main, develop, 그리고 merge되면 사라지는 보조 브랜치 feature, release, hotfix가 있다.
Git Flow는 보다 구조화된 개발 프로세스와 엄격한 제어를 제공하고, 대규모 프로젝트 또는 긴 주기의 배포를 관리할 때 유용하다.
2. Github Flow
위의 그림은 Github Flow 브랜치 전략을 설명한 그림이다.
Git Flow보다 훨씬 간략해진 모습을 볼 수 있다.
- main 브랜치: 모든 작업은 main (또는 master) 브랜치에서 시작하며, 이 브랜치는 항상 배포 가능한 상태를 유지
- feature 브랜치: 새로운 기능을 개발할 때마다 새로운 feature 브랜치를 만들고 해당 기능을 개발
- Pull Request (PR): 기능이나 수정이 완료되면 main 브랜치로 PR을 생성하고 리뷰어의 검토
- 병합 (Merge): PR이 승인되면 main 브랜치로 병합하고 배포
Git Flow와는 달리, main, feature 이렇게 2가지 종류의 브랜치만 가지고 있고, hotfix, release의 기능은 모두 feature 브랜치에서 통합해서 진행한다.
그리고 자동화가 되어있다는 점이 중요한데 main로 merge되고 push 되었을 때는, 즉시 배포될 수 있도록 CI/CD가 자동화 되어야 한다.
정리
1. 1개월 이상의 긴 호흡으로 개발하여 주기적으로 배포, QA 및 테스트, hotfix 등 수행할 수 있는 여력이 있는 팀이라면 git-flow가 적합
2. 수시로 릴리즈 되어야 할 필요가 있는 서비스를 지속적으로 테스트하고 배포하는 팀이라면 github-flow가 적합
참고
출처: https://inpa.tistory.com/entry/GIT-⚡️-github-flow-git-flow-📈-브랜치-전략# [Inpa Dev 👨💻:티스토리]