# Git 워크플로우 규칙 ## 브랜치 전략 ### 브랜치 구조 ``` main ← 배포 가능한 안정 브랜치 (보호됨) └── develop ← 개발 통합 브랜치 ├── feature/ISSUE-123-기능설명 ├── bugfix/ISSUE-456-버그설명 └── hotfix/ISSUE-789-긴급수정 ``` ### 브랜치 네이밍 - feature 브랜치: `feature/ISSUE-번호-간단설명` (예: `feature/ISSUE-42-user-login`) - bugfix 브랜치: `bugfix/ISSUE-번호-간단설명` - hotfix 브랜치: `hotfix/ISSUE-번호-간단설명` - 이슈 번호가 없는 경우: `feature/간단설명` (예: `feature/add-swagger-docs`) ### 브랜치 규칙 - main, develop 브랜치에 직접 커밋/푸시 금지 - feature 브랜치는 develop에서 분기 - hotfix 브랜치는 main에서 분기 - 머지는 반드시 MR(Merge Request)을 통해 수행 ## 커밋 메시지 규칙 ### Conventional Commits 형식 ``` type(scope): subject body (선택) footer (선택) ``` ### type (필수) | type | 설명 | |------|------| | feat | 새로운 기능 추가 | | fix | 버그 수정 | | docs | 문서 변경 | | style | 코드 포맷팅 (기능 변경 없음) | | refactor | 리팩토링 (기능 변경 없음) | | test | 테스트 추가/수정 | | chore | 빌드, 설정 변경 | | ci | CI/CD 설정 변경 | | perf | 성능 개선 | ### scope (선택) - 변경 범위를 나타내는 짧은 단어 - 한국어, 영어 모두 허용 (예: `feat(인증): 로그인 기능`, `fix(auth): token refresh`) ### subject (필수) - 변경 내용을 간결하게 설명 - 한국어, 영어 모두 허용 - 72자 이내 - 마침표(.) 없이 끝냄 ### 예시 ``` feat(auth): JWT 기반 로그인 구현 fix(배치): 야간 배치 타임아웃 수정 docs: README에 빌드 방법 추가 refactor(user-service): 중복 로직 추출 test(결제): 환불 로직 단위 테스트 추가 chore: Gradle 의존성 버전 업데이트 ``` ## MR(Merge Request) 규칙 ### MR 생성 - 제목: 커밋 메시지와 동일한 Conventional Commits 형식 - 본문: 변경 내용 요약, 테스트 방법, 관련 이슈 번호 - 라벨: 적절한 라벨 부착 (feature, bugfix, hotfix 등) ### MR 리뷰 - 최소 1명의 리뷰어 승인 필수 - CI 검증 통과 필수 (설정된 경우) - 리뷰 코멘트 모두 해결 후 머지 ### MR 머지 - Squash Merge 권장 (깔끔한 히스토리) - 머지 후 소스 브랜치 삭제