1. 개요
- 한 프로젝트를 개발하는데는 많은 개발자가 동원되어 코드를 수정하는 작업을 하는 것이 일반적이다.
혼자서 진행하는 개인프로젝트인 경우에는 master 브랜치에 수정 후 commit을 하거나 하나의 브랜치만 제작해 수정 후 삭제하더라도 크게 문제되는 부분은 없다. 하지만 개발자가 늘어날수록 브랜치간 충돌, 브랜치가 너무 많아지거나 의미를 파악하기 어려운 상황을 겪게 될 것이다. 따라서 프로젝트나 기업마다 브랜치 전략을 사용해 이를 해결한다.
2. Branch 전략 종류
- Github flow
- Git flow
- GitLab flow
3. Github Flow
- 깃허브에서 만든 단순하고 간결한 브랜치 구조를 의미한다.
- Master 브랜치를 중심으로 운영
- 기능 추가, 버그 수정 등 간단한 브랜치를 생성해 작업하고 삭제하는 방식
- 배포과정이 자주 일어나는 환경에 용이하다.
방식 : 기능 추가, 버그 수정 작업을 위해 Master로 부터 새로운 브랜치 생성 후 작업을 진행한다. 이 후, 서버에 존재하는 해당 새로 생성된 브랜치에 push를 진행하고 Master 브랜치에서 PR을 진행한다. 이 후, 팀원간 토론 후 문제 없다면 내용을 Master에 합치는 작업을 진행한다. 그 전에 해당 새롭게 생성한 브랜치를 배포해보면서 미리 문제가 없는지 파악하고 없다면 Master에 합쳐 배포하는 것 또한 가능하다.
4. Git Flow
- 5개의 브랜치를 운영
- 메인 브랜치로는 Master, Develop으로 설정하고 보조 브랜치는 feature, release, hotfix로 설정한다.
- 배포 주기가 긴, 즉, 이미 완성도가 높은 프로젝트에 용이하다.
방식 : Master 브랜치는 제품을 배포하기 위한 브랜치이고 Develop 브랜치는 개발자들의 개발이 이루어지는 브랜치를 의미한다.
이 때, Develop 브랜치에서 작업을 하고 새로운 버전과 같이 특정 버전의 작업이 완료되면 Master에 합치는 방식을 채택한다.
보조 브랜치는 feature(기능 구현), release(QA 진행), hotfix(버그 수정)가 있으며 작업 후 삭제된다는 점에서 메인 브랜치들과 차이점을 갖는다.
feature 브랜치 : Develop 브랜치의 새로운 버전을 위한 기능 구현
- develop 브랜치로 부터 파생
- 작업 완료 후 develop에 merge
- 하나의 새로운 기능 구현에 사용
- merge 이후에는 삭제
- merge 시 (--no-ff 사용 권장)
release 브랜치 : 새로운 버전 출시를 위한 QA 진행
- 다음 버전 출시를 위한 QA를 진행하는 브랜치
- 버그 수정, 버전 번호, 날짜 등의 메타 데이터를 준비, 기능 개발은 금지됨
- develop 브랜치로 부터 파생
- 작업 완료 후 develop 과 master에 merge
- merge 시 (--no-ff 사용 권장)
hotfix 브랜치 : 긴급한 문제 발생시 master로 부터 버그 수정
- 버그 발생시 빠른 대처를 위해 생성하는 브랜치
- master로 부터 파생
- 작업 완료 후 develop 과 master에 merge
- master로 merge 후에는 tag 명령을 통해 이전 버전보다 버전을 향상시킨다.
'Server Development > Cloud' 카테고리의 다른 글
Git Basic (0) | 2023.09.27 |
---|---|
Docker Basic (0) | 2023.08.14 |
CI/CD (0) | 2023.07.10 |
Cloud - IaaS vs PaaS vs SaaS (0) | 2023.04.17 |