최근에 진행한 프로젝트에 관해서, 컨벤션이 지켜지지 않았다는 피드백을 받았음.
컨벤션에도 규칙이 있다더라아
🐈⬛🐈 커밋 메세지 구조
type: Supject
(한 줄 띄기)
body (선택적)
(한 줄 띄기)
footer (선택적)
1. Type 작성법
':' 를 붙여 Subject와 구분하되, 띄어쓰기는 뒤에만 존재함
| feat: | 새로운 기능 |
| fix: | 버그 수정 |
| design: | 사용자 UI 변경 |
| style: | 포맷팅, 세미콜론 누락 등 코드 변경 없는 수정 |
| refactor: | 코드 리팩토링 (기능 변화 없음) |
| comment: | 주석 추가 및 변경 |
| docs: | 문서 수정 (README 등) |
| perf: | 성능 개선 |
| test: | 테스트 코드 추가/수정 |
| rename: | 파일, 폴더를 수정하거나 옮기는 작업만 수행 |
| remove: | 파일을 삭제하는 작업만 수행 |
| chore: | 빌드 작업, 패키지 매니저 수정 등 기타 작업 |
| build: | 빌드 시스템 관련 수정 |
| ci: | CI 설정 변경 (예: Github Actions, Jenkins 등) |
| revert: | 이전 커밋 되돌리기 |
| hotfix: | 긴급 버그 수정 (프로덕션 환경 즉시 대응용) |
ex) feat: 추가 get data api
2. Subject 작성법
: 코드 변경 사항에 대한 짧은 요약
- 50자 이내로 작성
- 소문자 동사원형(fix, add, change) / 명령어(고침, 추가, 변경) 로 시작
- 마지막에 특수문자 사용x (마침표, 물음표, 느낌표)
3. Body 작성법
- 선택적
- 어떻게 했는지가 아니라 무엇을, 왜 했는지 설명
- 여러 줄 가능, 각 줄은 72자 이하 권장
- 변경 전/후 차이, 고려사항 등 적을 수 있음
[ 예 시 ]
# 1. 최초 프로젝트 생성
feat(core): 기본 의존성을 포함한 Spring Boot 프로젝트 초기화
- Spring Boot 3.x 기반 프로젝트 생성
- Gradle 기반 프로젝트 구조 설정
- web, devtools, lombok, validation 등 기본 의존성 추가
# 2. application.yml 및 기본 설정 구성
chore(config): 기본 application.yml 및 프로파일 설정 구성
- application.yml 구조 정의
- local, dev, prod 프로파일 분리 구성
- 포트 및 로깅 레벨 설정
# 3. 공통 예외 처리 로직 추가
feat(core): @ControllerAdvice를 사용한 글로벌 예외 처리기 추가
- GlobalExceptionHandler 클래스 추가
- 커스텀 예외 클래스 정의
- 공통 에러 응답 포맷 적용
# 4. 사용자 회원가입 API 추가
feat(user): 사용자 회원가입 API 구현
- UserController, UserService, User 엔티티 생성
- DTO 및 유효성 검사(Validation) 적용
- Swagger로 테스트 완료
# 5. 사용자 비밀번호 암호화 처리
feat(user): 회원 비밀번호를 저장 전 BCrypt로 암호화
- Spring Security의 BCryptPasswordEncoder 사용
- 회원가입 시 비밀번호 암호화 적용
- 테스트 케이스 추가
# 6. 코드 포맷 및 import 정리
style(core): 코드 포맷 재정리 및 import 정리
# 7. 테스트 코드 추가
test(user): 사용자 회원가입에 대한 단위 테스트 추가
- UserService의 회원가입 테스트 작성
- 중복 이메일 예외 처리 테스트 포함
# 8. 성능 개선 (예: N+1 문제 해결)
perf(user): N+1 문제 방지를 위한 사용자 쿼리 최적화
- @EntityGraph 적용
- 쿼리 튜닝 및 테스트
# 9. 리팩토링
refactor(user): 유효성 검사 로직을 별도 서비스로 분리
- 이메일 중복 검사 메서드 분리
- 서비스 레이어의 가독성 향상
# 10. 빌드 스크립트 수정
build: build.gradle에 프로파일 기반 빌드 로직 추가
- spring.profiles.active에 따른 설정 분기 추가
- 빌드 시 프로파일 자동 적용 가능
# 11. 문서 추가
docs(readme): 설치 방법 문서화
4. Footer 작성법
- 선택적
- 이슈 트래커 ID를 명시하고 싶을 때 사용
- 여러개의 이슈 번호는 쉼표로 구분
- 이슈 트래커 유형은 다음과 같음
| Fixes: | 이슈 수정중 (아직 해결되지 않은 경우) |
| Resolves: | 이슈 해결 |
| Ref: | 참고할 이슈가 있을 때 |
| Related to: | 해당 커밋에 관련된 이슈 번호 (아직 해결되지 않은 경우) |
ex) Related to: #48, #45
🐈⬛🐈참고 사이트 : https://udacity.github.io/git-styleguide/
LIST
'👩🏻💻TIL (Today I Learn) > Git' 카테고리의 다른 글
| 👩🏻💻PR(Pull Request) 2탄. Request 받았을 때 승인하기 (0) | 2025.04.09 |
|---|---|
| 👩🏻💻PR(Pull Request) 1탄. push하기 (0) | 2025.04.08 |
| Git 특강_ 실전에서 주의할 것 (0) | 2025.02.26 |
| Git 특강_ 브랜치 활용하기 (0) | 2025.02.24 |
| Git 특강_ 기본 명령어 (0) | 2025.02.17 |