Table of contents
Open Table of contents
Conventional Commits의 포맷
Conventional Commits의 기본 포맷은 다음과 같습니다.
<타입>[적용 범위(선택 사항)]: <설명>
[본문(선택 사항)]
[꼬리말(선택 사항)]
- 타입(Type): 커밋의 유형을 나타냅니다. 주로 다음과 같은 유형이 사용됩니다.
- 적용 범위(Scope): 변경 사항이 어디에 적용되었는지를 나타냅니다. 선택 사항입니다.
- 설명(Description): 변경 사항에 대한 간결한 설명을 나타냅니다.
본문은 변경 사항에 대한 자세한 설명을 나타내며, 꼬리말은 이슈 번호 등을 나타냅니다.
타입(Type)
feat
: 새로운 기능을 추가할 때 사용합니다. 예를 들어, 새로운 API 엔드포인트를 추가하는 경우 feat(api): Add new endpoint for user data와 같이 사용할 수 있습니다.fix
: 버그를 수정할 때 사용합니다. 예를 들어, 사용자 인터페이스의 오류를 수정하는 경우 fix(ui): Correct the user login flow와 같이 명시할 수 있습니다.docs
: 문서에 관련된 변경사항을 기록할 때 사용합니다. 이는 코드 변경 없이 문서만 업데이트하는 경우에 해당합니다.style
: 코드의 스타일, 포맷팅, 누락된 세미콜론 추가 등과 같이 로직에 영향을 주지 않는 변경사항을 커버합니다.refactor
: 기능을 변경하지 않으면서 코드를 리팩토링할 때 사용합니다. 예를 들어, 코드를 더 이해하기 쉽게 만들거나 성능을 개선하는 경우에 해당합니다.test
: 테스트 추가, 테스트 리팩토링 등 테스트에 관련된 모든 변경사항을 나타냅니다.chore
: 빌드 과정 또는 보조 도구와 라이브러리에 변경사항이 있을 때 사용합니다. 예를 들면, 빌드 스크립트를 수정했을 때에 해당합니다.
예시
설명과 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를 자동으로 생성하기 위해서
- (포함된 커밋의 타입에 기반하여) 유의적 버전을 자동으로 변경하기 위해서
- 팀 동료, 타인, 그리고 기타 이해당사자에게 변화의 본질을 전달하기 위해서
- 빌드와 배포 프로세스를 수행하기 위해서
- 더 구조화된 커밋 히스토리를 보여줘서 사람들이 프로젝트에 기여하기 더 쉽도록 하기 위해서
CHANGELOG의 자동 생성은 여러가지 도구를 사용하여 가능합니다. 예를 들어, standard-version나 git-cliff를 사용하여 커밋 로그를 기반으로 CHANGELOG를 자동으로 생성할 수 있습니다.
아래 포스팅을 참고하여 CHANGELOG 자동 생성에 대해 더 자세히 알아보세요.
Commit Message 규칙
커밋 메시지를 영어로 작성할 경우 잘 알려진 커밋 메시지 규칙이 있습니다.
동명사보다 동사를 사용합니다.
커밋 메시지를 작성할 때 동명사보다 동사를 사용하여 커밋의 목적을 명확하게 전달할 수 있습니다.
명령문을 사용합니다.
커밋 메시지를 작성할 때 명령문을 사용하여 커밋의 목적을 명확하게 전달할 수 있습니다.
관사의 사용을 피합니다.
꼭 필요한 경우를 제외하고 관사의 사용을 지양하여 커밋 메시지를 간결하게 작성할 수 있습니다.
커밋 메시지를 위해 자주 사용하는 동사
[2월 우아한테크세미나] ‘글로벌 개발자로 성장하는 소프트웨어 실무 영어’에 발표된 내용을 바탕으로 자주 사용하는 동사를 옮겨 정리하였습니다. 커밋 메시지를 작성할 때 아래 동사를 참고하면 대부분의 경우를 표현할 수 있습니다.
Commit Type | Translation |
---|---|
Fix | 수정하다 |
Improve | 개선하다 |
Handle | 처리하다 |
Optimize | 최적화하다 |
Update | 업데이트하다 |
Implement | 구현하다, 실행하다 |
Refactor | 리팩터링하다 |
Add | 추가하다 |
Revert | 되돌리다 |
Change | 변경하다 |
Replace | 대체하다 |
Merge | 병합하다 |
Document | 문서화하다 |
Bump | 버전을 올리다 |
Simplify | 단순화하다 |
Enable | 가능하게 하다 |
Run | 실행하다 |
Clean | 제거하다, 정리하다 |
Wrap | 감싸다, 그룹화하다 |
Deploy | 배포하다 |
Modify | 변경하다 |
Remove | 제거하다 |
Rename | 이름을 바꾸다 |
Move | 이동하다, 이동시키다 |