카테고리 없음

Git Flow 전략

문자메일 2022. 11. 18. 03:36

주요 Branch

1. Main(=Master) : 실제 운영에 나간 코드만 가지고 있는 안정적인 코드만 들어있어야 하는 브렌치

2. Dev : 다음 배포에 나갈 개발건들 merge

3. Feature : 

4. Release : 배포 나갈 코드를 Dev 에서 release 브랜치 생성, 후에 qa 통과하면 main 브렌치에 merge

5. Hotfix : main 브랜치에서 따서 최소한의 수정만 함

 

 

개발 필요 기능 예시 : 로그인 기능, 로그아웃 기능

 

Case 1 : Release branch 생성 후 추가 작업 필요한 경우 (비밀번호 찾는 기능)

순서 

  1. 메인 브렌치에서 dev 브렌치 생성
  2. dev 브렌치에서 feature 브렌치 생성하여 로그인 기능 구현
  3. dev 브렌치에서 feature 브렌치 생성하여 로그아웃 기능 구현
  4. dev 브렌치에 로그인 기능 구현한 feature 브렌치 merge
  5. dev 브렌치에 로그아웃 기능 구현한 feature 브렌치 merge
  6. dev 브렌치에서 release 브렌치 생성
  7. release branch에서 feature 브렌치 생성하여 비밀번호 찾는 기능 구현
  8. release branch에 비밀번호 찾는 기능 구현한 feature 브렌치 merge
  9. main branch에 release 브렌치 merge
  10. main 브렌치 운영 반영
  11. dev 브렌치에 main 브렌치 merge ( dev = main + @ 상태가 항상 유지되어야 함)

 

Case 2 : Release branch 생성 후 추가 작업 필요 없는 경우

순서

  1. 메인 브렌치에서 dev 브렌치 생성
  2. dev 브렌치에서 feature 브렌치 생성하여 로그인 기능 구현
  3. dev 브렌치에서 feature 브렌치 생성하여 로그아웃 기능 구현
  4. dev 브렌치에 로그인 기능 구현한 feature 브렌치 merge
  5. dev 브렌치에 로그아웃 기능 구현한 feature 브렌치 merge
  6. dev 브렌치에서 release 브렌치 생성
  7. main 브렌치에 release 브렌치 merge
  8. main 브렌치 운영 반영
  9. dev 브렌치에 main 브렌치 merge ( dev = main + @ 상태가 항상 유지되어야 함)

Case 3 : Hotfix가 필요한 경우

  1. 메인 브렌치에서 dev 브렌치 생성
  2. dev 브렌치에서 feature 브렌치 생성하여 로그인 기능 구현
  3. dev 브렌치에서 feature 브렌치 생성하여 로그아웃 기능 구현
  4. dev 브렌치에 로그인 기능 구현한 feature 브렌치 merge
  5. dev 브렌치에 로그아웃 기능 구현한 feature 브렌치 merge
  6. dev 브렌치에서 release 브렌치 생성
  7. release branch에서 feature 브렌치 생성하여 비밀번호 찾는 기능 구현
  8. release branch에 비밀번호 찾는 기능 구현한 feature 브렌치 merge
  9. main branch에 release 브렌치 merge
  10. main 브렌치 운영 반영
  11. main 브렌치에 hotfix 브렌치 생성
  12. 문제 해결 후 main 브렌치에 hotfix 브렌치 merge
  13. dev 브렌치에 main 브렌치 conflict 처리 후 merge ( dev = main + @ 상태가 항상 유지되어야 함, 그러나 hotfix가 발생한 상황에서는 dev != main + @ 인 상황 발생)
  14. 현재 dev 버전과 이전 dev 브렌치 버전으로 생성된 feature 브렌치들의 싱크 맞추기 위하여, 버전 맞추기 위하여 dev 브렌치 내용 pull 받도록 요청해야 함