
Git Flow
브랜치 기능을 활용한 변경(버전) 이력 관리 전략이다. 크게 4가지 main / develop / feature / hotfix 브랜치를 생성 후 관리하는데 필요에 따라 improvement/* bugfix/* 등을 추가할 수 있다. 사실 이론적인 부분만 알고 있을 경우 잘 와닿지 않았는데 최근 진행했던 프로젝트에 Git Flow를 사용해 버전을 관리 하였고 이 과정에서 왜 협업에 브랜치 전략이 중요한지 확실히 알게 되었다.
Git Repository 구성
Upstream Remote Repository: 팀원들이 공유하고 있는 최신 코드가 저장되어 있는 원격 저장소
Origin Remote Repository: Upstream 저장소를 Fork 한 원격 개인 저장소
Local Repository: 개인 컴퓨터에 저장돼있는 로컬 저장소
- Local 저장소에서 작업 완료 후 Origin 저장소로 Push
- Origin 저장소에 Push 한 브랜치를 Upstream 저장소로 merge 하는 Pull Request를 생성 후 merge
- 새로운 작업 시에는 Local 저장소에서 Upstream 저장소를 pull 하여 추가 작업 진행

Git Flow 브랜치
1. 메인 브랜치
main과 develop 브랜치를 의미한다.
- main은 현재 배포돼있는 버전
- develop은 배포될 버전

2. 보조 브랜치
메인 브랜치(main/develop)를 제외한 브랜치를 의미한다. feature/* topic/* 등이 있다.
- main 브랜치를 분기로 develop 브랜치를 만듦
- main에서 나온 develop 브랜치를 활용해 다시 feature 브랜치로 나눔
- feature는 특정 기능을 개발하는 브랜치를 의미
- 보조 브랜치는 기능 완료 시까지 유지하며 완성 시 develop으로 merge

3. 릴리즈 브랜치
배포 직전 버그 수정 등의 기능을 수행하는 브랜치를 의미한다.
- 기능 구현 완료 후 feature를 develop 브랜치에 mrege
- 테스트를 위해 develop 브랜치를 분기로 한 release 브랜치 생성
- release 브랜치에서 에러가 없다면 main 브랜치에 merge
- 에러가 있다면 수정 후 다시 develop에 mrege

4. 핫픽스 브랜치
배포된 main에서 장애 발생 시 수정을 위한 브랜치를 의미한다.
- main에서 분기하여 hotfix/* 브랜치 생성
- 장애 수정 후 develop에 merge 후 main 브랜치에 최종 merge
