🐈‍⬛🐈Git 커밋 컨벤션 적절하게 작성하기
2025. 3. 25. 10:26

최근에 진행한 프로젝트에 관해서, 컨벤션이 지켜지지 않았다는 피드백을 받았음.
컨벤션에도 규칙이 있다더라아

🐈‍⬛🐈 커밋 메세지 구조

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