Git Flow 정리

이규훈·2024년 5월 4일

주요 브랜치

  1. Main(= Master)
  2. Dev
  3. Feature
  4. Release
  5. 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 생성하게 되면
  • 최신 코드가 아닌 상태로 개발이 진행된다.
profile
개발취준생

0개의 댓글