웨지의 Git코톡 - 깃브랜치전략 발표를 듣고 정리해봤습니다.
브랜치 전략?
브랜치 전략은 협업 과정에서 git 저장소를 효율적으로 쓰기 위한 전략
git-flow
5가지의 브랜치를 이용하는 전략. 주기적으로 배포하는 서비스에 적합.
2개의 메인 브랜치와 3개의 보조 브랜치가 존재한다. 메인 브랜치와 달리 보조 브랜치는 역할을 끝내면(merge되면) 삭제된다.
메인 브랜치
- master: 실제 배포에서 사용할 브랜치
- develop: 다음 버전을 개발하는 브랜치
보조 브랜치
- feature: 기능 개발 브랜치
- release: 이번 출시 버전 준비 브랜치
- hotfix: 출시 버전에서 발생한 버그 수정 브랜치
진행 과정
- develop 브랜치에서 기능을 개발하기 위한 feature 브랜치 생성
- 기능이 완성되면 develop 브랜치에 merge 후 feature 브랜치 삭제
- 이번 버전 기능이 모두 완료되면 QA(품질보증)을 위해 release 브랜치 생성
- 오류 발생시 수정. QA 완료 시, 해당 버전을 배포하기 위해 master 브랜치로 merge 후 release 브랜치 삭제(이 때 수정사항이 있다면 develop 브랜치에도 merge)
- master 브랜치에서 버그 발생 시, hotfix 브랜치 생성
- 오류를 수정하고 master와 develop 브랜치에 merge 후 hotfix 브랜치 삭제
github-flow
master브랜치와 pr을 이용하는 전략. 지속적 통합(CI), 지속적 배포(CD)가 자연스럽게 이루어짐.
CI란? 개발과 동시에 코드에 대한 통합을 지속적으로 진행함으로써 품질을 유지
CD란? 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하자는 개념
제품이 릴리즈되는 master 브랜치만 존재.
진행 과정
- 기능 개발, 오류 수정 등의 이유로 브랜치 생성. 이름은 의도를 드러낼 수 있게 짓기
- 각 브랜치에서 개발.
- pull request 보내기
- 보낸 pr에 대한 충분한 리뷰과정
- 실제 서버 or 테스트 환경에 배포
- 이상이 없다면 master 브랜치로 merge 하고 배포(배포 자동화)
[참고]