커밋 메시지 컨벤션

Jaehyeon Han·2025년 4월 11일

커밋 메시지 컨벤션

Conventional CommitsAngular Convention을 참조하여 커밋 메시지 형식을 조사하였다. 기본은 Conventional Commit이며 Angular Convention인 경우 별도로 표기하였다.

<type>[optional scope][!]: <description>

[optional body]

[optional footer(s)]

예시
fix: prevent racing of requests

Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.

Remove timeouts which were used to mitigate the racing issue but are
obsolete now.

Reviewed-by: Z
Refs: #123

참고로 <>는 필수이고, []는 선택이다.

type, body, footer 사이에는 빈 줄이 있어야 한다.

type

커밋의 범주이다. 명사를 사용한다.

Conventional Commits에서는 featfix만 소개하고 있다.

  • feat: 새로운 기능 추가 = MINOR
  • fix: 버그 수정 = PATCH
  • revert: 리버트 커밋 (권장사항) + footer에 revert하는 커밋의 Refs까지

Angular Convention

  • refactor: featfix가 아닌 코드 변경 = 기능 동일하게 유지하며 구조나 가독성 개선
  • test: 테스트 코드
  • perf: 성능 향상
  • style: 코드의 의미에 영향이 없는 변경 (오타, 공백 등)
  • docs: 문서만 변경
  • build: 빌드 시스템이나 외부 의존성 변화
  • ci: CI 설정 변화

scope

커밋으로 영향을 받는 코드 범위를 명사로 적는다.

description

무엇을 바꿨는지 요약하여 적는다.

Angular Convention

  • 동사는 원형 사용 + 소문자 시작: add(O), added(X), Add(X)
  • 마지막에 . 금지

body

description을 이해하는 데 도움이 될 수 있는 맥락을 제공한다.

정해진 형식은 없으며, 여러 문단으로 구성할 수 있다.

Angular Convetion

  • 동사 원형 사용
  • 이전 동작과 비교해 코드를 변경한 의도

key: value 또는 <space># 형식 → Signed-off-by: Alice, Fix #42

BREAKING CHANGE를 제외하고는 key 값(?)에는 공백 대신 -를 사용해야 한다. BREAKING-CHANGE도 가능하다. 하지만 value에는 공백이나 줄바꿈이 있어도 괜찮다.

Angular Convention

Closes #xxx: 이 커밋으로 해결되는 GitHub 이슈

BREAKING CHANGE

API 호환성이 깨질 수 있는 경우 기재한다. Semantic Versioning의 MAJOR와 동일한 의미이다.

표기

  • scope 뒤에 ! (ex. feat(api)!: send ...)
  • footer에 BREAKING CHANGE: 기재

둘 중에 하나는 반드시 표기해야 한다.

0개의 댓글