Skip to content

Conventional Commits

Published: at 오후 12:46

Table of contents

Open Table of contents

Conventional Commits의 포맷

Conventional Commits의 기본 포맷은 다음과 같습니다.

<타입>[적용 범위(선택 사항)]: <설명>

[본문(선택 사항)]

[꼬리말(선택 사항)]

본문은 변경 사항에 대한 자세한 설명을 나타내며, 꼬리말은 이슈 번호 등을 나타냅니다.

타입(Type)

예시

설명과 BREAKING CHANGE 꼬리말을 가지는 커밋 메시지

feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files

BREAKING CHANGE는 단절적 변경을 나타내며, 이를 통해 이전 버전과 호환되지 않는 변경사항을 명시할 수 있습니다.

BREAKING CHANGE이라는 푸터를 달거나 !를 포함한 커밋 메시지를 작성하여 단절적 변경에 주의를 주는 형태로 작성합니다.

단절적 변경(breaking change)에 주의를 주기 위해 !를 포함한 커밋 메시지

feat!: send an email to the customer when a product is shipped

BREAKING CHANGE를 명시하지 않고 !를 포함한 커밋 메시지를 작성하여 단절적 변경에 주의를 주는 방법입니다.

단절적 변경(breaking change)에 주의를 주기위해 적용 범위와 ! 를 포함한 커밋 메시지

feat(api)!: send an email to the customer when a product is shipped

BREAKING CHANGE 꼬리말과 !를 함께 포함한 커밋 메시지

chore!: drop support for Node 6

BREAKING CHANGE: use JavaScript features not available in Node 6.

본문이 없는 커밋 메시지

docs: correct spelling of CHANGELOG

적용 범위를 가지는 커밋 메시지

feat(lang): add polish language

복잡한 변경 사항이 아니면 본문과 꼬리말을 생략한 위 두 예시 형태를 주로 작성하고 있습니다.

Conventional Commits의 장점

CHANGELOG의 자동 생성은 여러가지 도구를 사용하여 가능합니다. 예를 들어, standard-versiongit-cliff를 사용하여 커밋 로그를 기반으로 CHANGELOG를 자동으로 생성할 수 있습니다.

아래 포스팅을 참고하여 CHANGELOG 자동 생성에 대해 더 자세히 알아보세요.

Commit Message 규칙

커밋 메시지를 영어로 작성할 경우 잘 알려진 커밋 메시지 규칙이 있습니다.

동명사보다 동사를 사용합니다.

커밋 메시지를 작성할 때 동명사보다 동사를 사용하여 커밋의 목적을 명확하게 전달할 수 있습니다.

명령문을 사용합니다.

커밋 메시지를 작성할 때 명령문을 사용하여 커밋의 목적을 명확하게 전달할 수 있습니다.

관사의 사용을 피합니다.

꼭 필요한 경우를 제외하고 관사의 사용을 지양하여 커밋 메시지를 간결하게 작성할 수 있습니다.

커밋 메시지를 위해 자주 사용하는 동사

[2월 우아한테크세미나] ‘글로벌 개발자로 성장하는 소프트웨어 실무 영어’에 발표된 내용을 바탕으로 자주 사용하는 동사를 옮겨 정리하였습니다. 커밋 메시지를 작성할 때 아래 동사를 참고하면 대부분의 경우를 표현할 수 있습니다.

Commit TypeTranslation
Fix수정하다
Improve개선하다
Handle처리하다
Optimize최적화하다
Update업데이트하다
Implement구현하다, 실행하다
Refactor리팩터링하다
Add추가하다
Revert되돌리다
Change변경하다
Replace대체하다
Merge병합하다
Document문서화하다
Bump버전을 올리다
Simplify단순화하다
Enable가능하게 하다
Run실행하다
Clean제거하다, 정리하다
Wrap감싸다, 그룹화하다
Deploy배포하다
Modify변경하다
Remove제거하다
Rename이름을 바꾸다
Move이동하다, 이동시키다