Conventional Commits와 Angular 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 사이에는 빈 줄이 있어야 한다.
커밋의 범주이다. 명사를 사용한다.
Conventional Commits에서는 feat와 fix만 소개하고 있다.
feat: 새로운 기능 추가 = MINORfix: 버그 수정 = PATCHrevert: 리버트 커밋 (권장사항) + footer에 revert하는 커밋의 Refs까지refactor: feat와 fix가 아닌 코드 변경 = 기능 동일하게 유지하며 구조나 가독성 개선test: 테스트 코드perf: 성능 향상style: 코드의 의미에 영향이 없는 변경 (오타, 공백 등)docs: 문서만 변경build: 빌드 시스템이나 외부 의존성 변화ci: CI 설정 변화커밋으로 영향을 받는 코드 범위를 명사로 적는다.
무엇을 바꿨는지 요약하여 적는다.
. 금지description을 이해하는 데 도움이 될 수 있는 맥락을 제공한다.
정해진 형식은 없으며, 여러 문단으로 구성할 수 있다.
key: value 또는 <space># 형식 → Signed-off-by: Alice, Fix #42
BREAKING CHANGE를 제외하고는 key 값(?)에는 공백 대신 -를 사용해야 한다. BREAKING-CHANGE도 가능하다. 하지만 value에는 공백이나 줄바꿈이 있어도 괜찮다.
Closes #xxx: 이 커밋으로 해결되는 GitHub 이슈
API 호환성이 깨질 수 있는 경우 기재한다. Semantic Versioning의 MAJOR와 동일한 의미이다.
! (ex. feat(api)!: send ...)BREAKING CHANGE: 기재둘 중에 하나는 반드시 표기해야 한다.