본문 바로가기

Engineering/Architecture

Git branch 전략(개인브랜치별)

Git Branch List
- 개인브랜치 (ekgus419)
- 개발브랜치 (develop)
- 배포브랜치 (release)
- 운영브랜치 (main)

1. 개인 브랜치 (ekgus419)에서 작업

개발 작업은 개인 브랜치 (ekgus419)에서 진행됩니다.

이 브랜치는 자신의 기능을 개발하거나 버그를 수정하는 데 사용됩니다.

  • 작업 시작 전에 최신 상태의 develop 브랜치를 로컬로 가져와서 ekgus419 브랜치에서 시작하는 것이 좋습니다.
  • 작업 순서:
    1. develop 브랜치를 최신 상태로 가져오기
    2. ekgus419 브랜치에서 작업 시작
    3. 작업 후 커밋
git checkout develop
git pull origin develop  # 최신 develop 상태 가져오기

git checkout ekgus419

# 작업하고 커밋
git add .
git commit -m "작업 내용"

2. 개인 브랜치 (ekgus419)에서 develop 브랜치로 머지

개인 브랜치에서 작업을 끝내고 나면, 그 변경 사항을 개발 브랜치 (develop)에 반영해야 합니다.
develop 브랜치는 팀 전체가 작업하는 브랜치이므로, 여기에 반영된 변경 사항은 다른 사람들의 작업과 통합됩니다.

  • 머지 순서:
    1. ekgus419 브랜치에서 develop 브랜치를 머지하기 전에 develop 브랜치를 최신 상태로 가져옵니다.
    2. ekgus419 브랜치의 변경 사항을 develop 브랜치로 머지합니다.
git checkout develop
git pull origin develop  # 최신 develop 상태 가져오기

git checkout ekgus419
git rebase develop  # develop 브랜치의 최신 상태를 ekgus419에 반영(선택사항:충돌 해결 필요)

git checkout develop
git merge ekgus419  # ekgus419 브랜치의 변경 사항을 develop에 머지

git push origin develop

3. develop 브랜치에서 release 브랜치로 머지

배포 준비가 되면, develop 브랜치의 변경 사항을 release 브랜치로 병합하여 배포 준비를 합니다. release 브랜치는 배포와 관련된 최종 조정을 위한 브랜치입니다.

  • 머지 순서:
    1. release 브랜치를 최신 상태로 만들기 위해 develop 브랜치를 release 브랜치로 병합합니다.
    2. release 브랜치에서 배포 관련 테스트나 수정 작업을 합니다.
git checkout release
git pull origin release  # 최신 release 상태 가져오기

git checkout develop
git merge release  # develop 브랜치의 최신 변경 사항을 release 브랜치에 병합

git push origin release

4. release 브랜치에서 main 브랜치로 머지

배포 준비가 완료되면, 배포된 내용을 main 브랜치로 병합하여 운영 환경에 반영합니다. main 브랜치는 운영 환경에 반영되는 최종적인 브랜치입니다.

  • 머지 순서:
    1. main 브랜치를 최신 상태로 만든 후, release 브랜치를 main 브랜치에 병합합니다.
    2. main 브랜치에서 배포 작업을 진행합니다.
git checkout main
git pull origin main  # 최신 main 상태 가져오기

git checkout release
git merge main  # release 브랜치의 변경 사항을 main 브랜치에 병합

git push origin main

5. 마이그레이션

마이그레이션 작업은 일반적으로 데이터베이스 구조 변경이나 시스템 변경을 반영할 때 필요합니다. 기존 코드에 영향을 줄 수 있는 민감한 작업이기 때문에 마이그레이션과 관련된 작업은 선반영을 합니다. (기존 모델에 추가/수정 하는 경우라면 Not Null이 아닌 Null로 반영을 합니다.)

release 브랜치에서 마이그레이션 브랜치를 생성하여, 마이그레이션 작업을 수행한 후, develop과 main 브랜치에 반영하는 흐름입니다.

1) release 브랜치에서 마이그레이션 브랜치 생성

먼저, release 브랜치에서 마이그레이션 브랜치를 생성하여 마이그레이션 작업을 진행합니다.

git checkout release
git pull origin release  # 최신 release 상태 가져오기

# 마이그레이션 브랜치 생성
git checkout -b migration-branch

2) 마이그레이션 진행 후 develop과 main에 반영

마이그레이션 작업이 완료되면, 해당 브랜치를 develop 브랜치와 main 브랜치에 반영해야 합니다. 마이그레이션 작업은 보통 중요한 변경이므로, 이를 develop와 main에 반영하는 과정을 거칩니다.

  • 마이그레이션을 develop에 반영:
git checkout develop
git pull origin develop  # 최신 develop 상태 가져오기

git merge migration-branch  # 마이그레이션 브랜치를 develop에 병합

git push origin develop
  • 마이그레이션을 main에 반영:
git checkout main
git pull origin main  # 최신 main 상태 가져오기

git merge migration-branch  # 마이그레이션 브랜치를 main에 병합

git push origin main

3) 마이그레이션 완료 후 release 브랜치에서 배포

마이그레이션 작업이 끝났다면, release 브랜치에서 최종 배포 작업을 진행합니다. release 브랜치에서 마이그레이션이 완료된 후, 해당 작업을 배포합니다.

git checkout release
git merge migration-branch  # 마이그레이션 브랜치를 release에 병합

git push origin release  # 배포 준비 완료

4) release 기준으로 develop과 main에 반영

마이그레이션 작업이 완료된 후, release 브랜치 기준으로 develop과 main 브랜치에 해당 작업을 반영합니다. 이렇게 함으로써, 각 브랜치가 동일한 마이그레이션 상태를 갖게 됩니다.

  • release 브랜치에서 develop 브랜치로 마이그레이션 반영:
git checkout develop
git pull origin develop  # 최신 develop 상태 가져오기

git merge release  # release 브랜치의 변경 사항을 develop에 병합

git push origin develop
  • release 브랜치에서 main 브랜치로 마이그레이션 반영:
git checkout main
git pull origin main  # 최신 main 상태 가져오기

git merge release  # release 브랜치의 변경 사항을 main에 병합

git push origin main

전체 순서

  1. 개인 브랜치(ekgus419)에서 작업 후 커밋.
  2. 개인 브랜치에서 develop 브랜치로 머지.
  3. develop 브랜치에서 release 브랜치로 머지 (배포 준비).
  4. release 브랜치에서 main 브랜치로 머지 (배포).

전체 순서 (마이그레이션 포함)

  1. 개인 브랜치(ekgus419)에서 작업 후 커밋.
  2. 개인 브랜치에서 develop 브랜치로 머지.
  3. develop 브랜치에서 release 브랜치로 머지 (배포 준비).
  4. release 브랜치에서 main 브랜치로 머지 (배포).
  5. 마이그레이션:
    1. release 브랜치에서 마이그레이션 브랜치 생성.
    2. 마이그레이션 진행 후, develop과 main에 반영.
    3. 마이그레이션 작업 완료 후, release 브랜치에서 배포.
    4. release 브랜치 기준으로 develop과 main 브랜치에 반영.

'Engineering > Architecture' 카테고리의 다른 글

Git Branch 전략(기능별)  (0) 2025.03.19
Git Branch 네이밍 규칙  (2) 2025.03.19
Git PR 템플릿  (0) 2025.03.19
Git Commit 컨벤션  (0) 2025.03.19