Git을 사용하여 개발하는 환경에서 Branch 간의 문제없이 배포까지 안정적으로 할 수 있도록 Branch를 관리하는 전략이다.
- 실제 개발 환경에서는 한 명이 작업하는 것이 아닌 여러 명이 협업을 하기 때문에 복잡한 상황에서 Git이 꼬이지 않도록 할 수 있다.
- 운영 서버에 배포되어야 할 코드들만 배포 될 수 있도록 도와준다.
주요 Branch
- Main(= Master)
- 실제 운영 환경의 코드를 가지고 있는 Branch
- 안정적인 코드만 들어 있어야 한다.
- Dev
- Main Branch를 Base로 생성한 Branch
- 다음 배포에 적용할 코드들을 Merge해서 가지고 있는 Branch
- Feature
- 어떤 기능을 개발할 때 사용하는 Branch
- 기능 개발 완료 후 Dev Branch에 Merge 한다.
- Release
- 운영 배포 단계가 오면 Dev Branch를 Base로 생성한 Branch
- 배포하기 전 Snapshot을 찍어 놓는 느낌의 Branch이다.
- 테스트 완료 후 Main Branch와 Merge 한다.
- Hotfix
- 의도치 않은 장애 상황에 긴급하게 작업을 진행할 때 사용할 Branch
- Main Branch를 Base로 생성해서 최소한의 수정 후 Main Branch로 Merge 한다.
예시
- 요구 사항이 회원 가입, 로그인 기능 개발일 경우
- Main(Master) Branch를 Base로 Dev Branch 생성
- Dev Branch를 Base로 Feature/회원가입, Feature/로그인 Branch 생성 후 작업
- 개발이 완료되면 Dev Branch에 Merge 한다.
- Dev Branch를 Base로 Release Branch 생성
- Release Branch를 생성한 후, 추가적인 작업이 필요할 경우에는 Release Branch를 Base로 Feature/추가 작업 Branch생성
- 작업을 완료한 후, Release Branch에 Merge 한다.
- Release Branch를 Main Branch로 Merge 한다.
- Main Branch를 Dev Branch로 Merge 해서 Master와 Dev의 싱크를 맞춘다.
(싱크를 맞추지 않고 Dev Branch를 Base로 작업을 진행하면 추후 Merge 과정에서 많은 충돌이 발생하게 된다.)
* 항상 Master Branch에 변경 사항이 생기면 Dev Branch와 싱크를 맞춰야 한다.