주요 브랜치
- Main(= Master)
- Dev
- Feature
- Release
- Hotfix
main -> 실제 운영환경 브랜치
dev -> 개발 환경 브랜치
feature -> 어떤 피처를 개발할 때 dev 브랜치로부터 브랜치 생성 및 완료 후 dev 브랜치에 머지
release -> dev 브랜치 base로 생성 후 실제 운영 환경 배포전 스냅샷을 뜨는 느낌으로 데브 브랜치에서 릴리즈 브랜치 생성. 릴리즈 브랜치가 생성이 된 시점부터는 데브 브랜치에 어떤 이번 배포에 나갈 내용들을 작업을 하지않고 release 브랜치에서 작업을해야한다.
release브랜치로 배포를 하고 QA나 혹은 개발 테스트를 마무리 지었을 경우에는 그 릴리즈 브랜치를 메인 브랜치에 머지를 하게 된다.
Hotfix -> 의도치 않은 장애 상황이 발생할경우 main에서 브랜치를 따고 커밋이후 다시 메인 브랜치에 머지를 한 후 메인 브랜치를 배포한다.
시나리오
1. Release 브랜치 생성 후 추가 작업이 필요해진 경우
- Release Branch를 기준으로 추가 작업을 위한 Branch를 생성한다.

- 추가 작업이 끝나면 Release Branch에 Merge 후 Release Branch를 Master Branch에 Merge 한다

Master에 추가된 작업 내용을
- Dev Branch에 Master Branch를 Merge 하여 Master와 Dev의 Sync를 맞춘다

Q. 왜 Master와 Dev 간 Sync를 맞춰야 할까?
- Dev는 Master를 Base로 생성된 Branch이다.
- 그러므로 Dev = Master + @의 코드를 갖고 있어야 한다.
- 만약 Sync가 안 맞을 경우엔 Dev != Master + @가 된다.
- 이런 상태로 누군가 Dev에서 신규 Branch를 생성하게 되면 코드가 꼬이게 된다
2. Release Branch 생성 후 추가 작업이 없는 경우
- Release Branch를 Master Branch에 Merge 한다

- Dev Branch에 Master Branch를 Merge 하여 Master와 Dev의 Sync를 맞춘다.

3. Hotfix가 나가야 할 상황이라면
-
다음과 같은 상황에서 운영에서 장애가 발생하여
-
Hotfix로 이슈를 수정하여 배포가 나가야한다

-
Master Branch를 기준으로 Hotfix Branch를 생성한다.

-
Hotfix Branch에 수정 작업을 진행한다.

-
Hotfix 작업이 끝나면 Master Branch에 Merge 한다.

-
Dev Branch에 Master Branch를 Merge 하여 Master와 Dev의 Sync를 맞춘다.

-
이 후 신규 작업은 Dev Branch를 Base로 새로운 Feature Branch를 생성한다
![업로드중..]()
Q. Hotfix 이 후 왜 Master와 Dev 간 Sync를 맞춰야 할까?
- Master를 Dev에 Merge 하지 않고
- Dev에서 Feature Branch 생성하게 되면
- 최신 코드가 아닌 상태로 개발이 진행된다.