Solution/Git
[Git] Git - Branch 전략
JB1104
2023. 11. 20. 10:37
728x90
반응형
SMALL
Git Branch 전략
- Git Branch에 전략, 즉 규칙을 부여하는 것
- Git Branch를 효과적으로 관리하기 위한 워크플로우
- 각 Branch에 규칙을 정해놓고, 해당 규칙을 팀원들이 지켜가며 개발을 진행하는 것
종류
- Git-Flow
- GitHub-Flow
Branch를 사용해야 하는 이유?
- Main Branch는 일반적으로 출시되고 배포된 코드를 위한 브랜치
- 이곳에 기능을 하나씩 커밋을 진행하다 보면, 기능이 완성되기 전까지 Main Branch의 소스코드는 불완전상태로 존재
- 하나의 Branch로 개발을 진행하다 보면, 작업 중인 파일을 누군가 건드려 충돌이 발생 우려
- 독립적 개발을 위해 필요한 기능
Branch를 나누는 방법
- main(master) : 서비스를 직접 배포하는 역할을 하는 브랜치
- feature(기능) : 각 기능별 개발 브랜치
- develop(개발) : feature에서 개발된 내용이 저장되는 브랜치
- release(배포) : 배포를 하기 전 내용을 QA(품질검사) 하기 위한 브랜치
- hotfix(빨리 고치기) : main 브랜치로 배포를 하고 나서 버그가 생겼을 때, 빨리 고치기 위한 브랜치
→ main, develop은 필수 브랜치이지만, 나머지 브랜치는 유지보수를 목적으로 하는 선택적 브랜치
→ feature 브랜치는 주로 'feat/{기능 이름}'으로 명명 (e.g feature/login, feature/logout)
Git-Flow
장점
- 브랜치별로 책임을 명확히 하는 규칙성
- 매우 디테일한 버전 정보 제공
- main에 있는 코드는 매우 깔끔한 상태 유지 (테스트되고 최종 수정된 것만 반영)
- 브랜치별로 역할이 있으므로 문제가 있더라도 문제 발생 시 각 브랜치를 대기시킬 필요가 없음
단점
- 많은 브랜치 때문에 생기는 복잡한 규칙
- release로 인한 많은 동기화 작업
- 애자일의 반복적인 접근법과 Git-Flow의 엄격하고 구체적인 규칙과 충돌
GitHub-Flow
장점
- 깔끔하고 간단한 협력 규칙
- 지속적인 총합과 개발의 편리함
- 빠른 피드백과 이슈 발행 및 변화를 독려
- feature 개발 이후, develop, release까지 전달할 필요가 없음
단점
- Git-Flow에 비해 체계적이지 않음
- 전반적인 개발 프로세스 관리가 더 힘들어질 수 있음
- 짧은 주기가 아닌 큰 주기의 release의 환경에는 맞지 않음
- 운영과 개발 브랜치 모두를 감당하는 master 브랜치는 코드가 지저분할 수 있음
- release 준비와 버그 수정이 모두 master 브랜치에 있으므로 특별한 주의가 더 필요함
어떤 전략을 사용해야 하나?
- Git-Flow
→ 1개월 이상의 긴 호흡으로 개발하여 주기적으로 배포, QA 및 테스트, hotfix 등 수행할 수 있는 여력이 있는 팀이라면 적합
→ 소프트웨어 버전관리가 필요한 APP, 솔루션, API에 적합 - GitHub-Flow
→ 수시로 릴리즈 되어야 할 필요가 있는 서비스를 지속적으로 테스트하고 배포하는 팀에 적합
→ 상시 배포가 가능하고, 그렇게 수행하는 프로젝트에 적합. 즉, CI/CD 자동화가 되어 있는 것이 바람직
→ 웹 애플리케이션에 적합
728x90
반응형
LIST