Commit Message Style Guide
Rules for a great git commit message style

Git Commit Message Style Guide의 목적은 Commit Message를 통해서 추가/수정사항에 커밋 메시지만으로 파악이 가능하고, 빠르게 원하는 커밋 내용을 확인하고 파악하게 하는데 있다.
기본적으로 Conventional Commits을 따르며, 커밋 메세지는 다음과 같은 구조가 되어야 한다.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
type
type은 커밋에 기록된 작업들의 성격이 무엇인지 알려주는 역할을 한다.
Semantic Versioning은 어플리케이션 릴리즈 버전을 명시하는 형태로 2.1.0과 같은 3개의 숫자로 이루어져 있다. 각각 Major, Minor, Patch에 대한 버전을 의미한다.
| type | description |
|---|---|
| fix | 버그 수정과 관련된 커밋 타입. Semantic Versioning의 Patch와 관련 |
| feat | 새로운 기능에 대한 커밋 타입. Semantic Versioning의 Minor와 관련 |
| build | 빌드 관련 파일 수정에 대한 커밋 타입 |
| ci | CI 관련 수정에 대한 커밋 타입 |
| docs | Documentation 수정에 대한 커밋 타입 |
| style | 코드 의미에 영향을 주지 않는 수정에 대한 커밋 타입 |
| refactor | 코드 리팩토링에 대한 커밋 타입 |
| test | 테스트 코드 수정에 대한 커밋 타입 |
| chore | 어느 부류에 넣기 애매하거나, 사소한 작업들에 대한 내용 (예시: 주석 제거, 오타 수정 등...) |
scope
- 해당 커밋이 어떤 범위의 수정 사항인지 부가적인 설명을 하는 부분이다. 협업을 할 때에 작업을 분담해서 진행하기 때문에 범위에 대한 정보를 포함해서 커밋 메세지를 작업한다면 서로의 업무를 파악하는데 도움이 된다.
- scope은 반드시 코드베이스의 section을 묘사하는 명사로 이루어져야 하며, 괄호로 감싸야한다. 예) fix(parser)
description
- 해당 커밋의 작업 내용을 요약해서 적어야 한다. Add product detail information get method와 같이 현재형 동사로 적는 것이 일반적이다. description은 반드시 type/scope 이후 콜론과 공백 다음 와야 하며 description은 코드 변경에 대한 짧은 요약이다.
body
- type과 description으로 요약해서 전달하기 어려운 세부적인 내용에 대해서 적는 부분이다. Semantic Versioning에서 Major에 대한 수정이 일어난다면 body를 작성하는 것이 필수적으로 요구된다.
- 커밋 메시지 제목은 "Add dark mode", "Fix racing condition", "Update README"와 같이 명령적 어조(Imperative Mood)의 동사 원형으로 시작하는 것이 일반적이다.
- 커밋 메시지 끝에는 마침표(.)를 붙이지 않는다. 또한 반드시 필요한 경우를 제외하면 쉼표(,), 하이픈(-)과 같은 구두점을 생략한다.
X : feat: implement google analytics.
O : feat: implement google analytics
footer
footer는 해당 커밋이 어떤 이슈에서 왔는지와 같은 참조 정보들을 추가하는 용도로 사용한다. 또한, Semantic Versioning에서 Major한 변경이 있는 경우에 BREAKING CHANGE라는 footer를 작성하여 명시적으로 나타낸다. 즉, 어떠한 부분이 크게 변경되어 이전 버전과 다른 버전으로 명시해야 하는 경우에 해당 footer를 작성한다고 보면 된다. BREAKING CHANGE에 주의를 주기 위해서 커밋 헤더에서 !를 같이 표기하기도 한다.
footer는 반드시 단어 토큰으로 시작해야 하며, 토큰 뒤에는 :<space> 혹은 <space># 으로 시작하는 문자열 토큰이 있어야 한다. 단, BREAKING CHANGE는 예외적으로 토큰으로 사용될 수 있다.
Bitbucket 'Smart Commit'을 활용하면 Jira 상태가 전이가 가능하다. https://support.atlassian.com/bitbucket-cloud/docs/use-smart-commits/
ex) Adds a comment to a Jira Software issue.
Refs: JRA-34 #comment corrected indent issue
ex) Workflow transitions
Refs: JRA-090 #close Fixed this today
Examples
Conventional Commits에서 규격이 적용된 예제 커밋 메세지들을 확인할 수 있다.