commit을 할 때마다 항상 commit message는 어떻게 작성해야 하는지 고민이 된다. 예전에는 단순히 'first commit', 'second commit' 등 의미없는 내용으로 commit을 했지만 커밋 컨벤션이라는걸 알게 된 이후로 살짝 정리를 해봤다.
Commit convention의 뜻을 풀어보면 커밋 규약이다. 사람마다 commit message를 작성하는데 이런 규칙까지 정한 이유는 뭘까?
- CHANGELOG를 자동으로 생성하기 위해
- 유의적 버전(Sementic Versioning)을 자동으로 변경하기 위해
- 팀원 등 타인에게 변경 내용을 전달하기 위해
- 빌드와 배포 프로세스를 수행하기 위해
- 더 구조화된 커밋 히스토리를 보여줘서 사람들이 프로젝트에 기여하기 더 쉽도록 하기 위해
Commit message는 다음과 같은 구조로 작성한다.
<타입>[적용 범위(선택 사항)]: <제목>
[본문(선택 사항)]
[꼬리말(선택 사항)]
type | |
---|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
update | 내용 보충 |
docs | 문서 변경 |
style | 코드에 영향 없는 변경(white space, formatting, colons) |
test | 누락된 테스트 추가, 리팩터링 테스트 포함; 프로덕션 코드 변경 없음 |
build | 시스템 또는 외부 종속성에 영향을 미치는 변경사항 (npm, gulp, yarn 레벨) |
ci | ci구성파일 및 스크립트 변경 |
chore | 패키지 매니저 변경, 코드 변경 없이 설정을 변경 |
perf | 성능 개선 |
refactor | 버그를 수정하거나 기능을 추가하지 않는 코드 변경, 리팩터링 |
revert | 작업 되돌리기 |
- 제목과 본문 사이는 한 줄 띄운다.
- 영문 기준 50자 이내로 작성한다.
- 첫글자는 대문자로 작성한다.
- 제목 끝에 마침표
.
는 붙이지 않는다.- 명령조로 작성한다
- Added(x) → Add(o)
- 본문은 영문 기준 한 줄에 72자 이내로 작성한다.
- 본문은 어떻게 변경했는지 보다 무엇을, 왜 변경했는지 작성한다.
- issue tracker ID를 작성한다.
유형: #이슈 번호
형식으로 사용한다.
Conventional Commits 1.0.0
Karma - Git 커밋 메시지
좋은 git 커밋 메시지를 작성하기 위한 7가지 약속
효율적인 commit message 작성을 위한 conventional commits