지금까지는 아무 말을 적으며 커밋 메세지를 남겼는데, 이 또한 공부해보니 고쳐야할 점이 많다는 것을 느끼고 이에 관해 정리해보려한다.
특히 협업에서의 중요성은 더 올라감을 느꼈다.
type(옵션): [#issueNumber -]Subject // -> 제목
(한 줄을 띄워 분리)
body(옵션) // -> 본문
(한 줄을 띄워 분리)
footer(옵션) // -> 꼬리말
◾ type : 어떤 의도로 커밋했는지를 type에 명시. 자세한 사항은 아래서
◾ subject : 최대 50글자가 넘지 않도록 하고 마침표는 찍지 않음. 영문으로 표기하는 경우 동사(원형)를 가장 앞에 두고 첫 글자는 대문자로 표기.
◾ body : 긴 설명이 필요한 경우에 작성. 어떻게 했는지가 아니라, 무엇을 왜 했는지를 작성. 최대 75자를 넘기지 않도록 함
◾ footer : issue tracker ID를 명시하고 싶은 경우에 작성
타입은 태그와 제목으로 구성, 태그는 영어로 쓰되 첫 문자는 대문자
"태그:제목"의 형태로 : 뒤에만 space가 있음에 유의!
| 태그 이름 | 설명 |
|---|---|
| Feat | 새로운 기능을 추가할 경우 |
| Fix | 버그를 고친 경우 |
| Design | CSS등 사용자 UI 디자인 변경 |
| !BREAKING CHANGE | 커다란 API 변경의 경우 |
| !HOTFIX | 급하게 치명적인 버그를 고쳐야하는 경우 |
| Style | 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 |
| Refactor | 프로덕션 코드 리팩토링 |
| Comment | 필요한 주석 추가 및 변경 |
| Docs | 문서를 수정한 경우 |
| Test | 테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X) |
| Chore | 빌드 태스트 업데이트, 패키지 매니저를 설정하는 경우(프로덕션 코드 변경 X) |
| Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 |
| Remove | 파일을 삭제하는 작업만 수행한 경우 |
태그 뒤에 ':' 를 붙여 제목과 구별할 수 있도록 함
❕ 추가적인 문맥 정보를 제공하기 위한 목적으로 괄호 안에도 적을 수 있음
ex)
"Feat(navigation):"
"Fix(database):"
Style, Refactor, Comment 태그가 개선 태그의 종류
Style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우(오타, 탭 사이즈, 변수명 변경 등도 포함)
Refactor: 프로덕션 코드 리팩토링, 새로운 기능이나 버그 수정없이 현재 구현을 개선한 경우
Comment: 필요한 주석 추가 및 변경
제목은 코드 변경 사항에 대한 짧은 요약,
- 제목의 처음은 동사 원형으로 시작합니다.
- 총 글자 수는 50자 이내로 작성
- 마지막에 특수문자는 삽입 ❌ ex) 마침표(.), 느낌표(!), 물음표(?)
- 제목은 개조식 구문으로 작성
- 꼬리말은 optional이고 이슈 트래커 ID를 작성
- "유형: #이슈 번호" 형식으로 사용
- 여러 개의 이슈 번호를 적을 때는 쉼표로 구분
- 이슈 트래커 유형은 다음 중 하나를 사용합니다.
- Fixes: 이슈 수정중 (아직 해결되지 않은 경우)
- Resolves: 이슈를 해결했을 때 사용
- Ref: 참고할 이슈가 있을 때 사용
- Related to: 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)
ex) Fixes: #45 Related to: #34, #23
🎨 : 코드의 형식 / 구조를 개선 할 때
📰 : 새 파일을 만들 때
📝 : 사소한 코드 또는 언어를 변경할 때
🐎 : 성능을 향상시킬 때
📚 : 문서를 쓸 때
🐛 : 버그 reporting할 때, @FIXME 주석 태그 삽입
🚑 : 버그를 고칠 때
🐧 : 리눅스에서 무언가를 고칠 때
🍎 : Mac OS에서 무언가를 고칠 때
🏁 : Windows에서 무언가를 고칠 때
🔥 : 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께
🚜 : 파일 구조를 변경할 때 . 🎨과 함께 사용
🔨 : 코드를 리팩토링 할 때
☔️ : 테스트를 추가 할 때
🔬 : 코드 범위를 추가 할 때
💚 : CI 빌드를 고칠 때
🔒 : 보안을 다룰 때
⬆️ : 종속성을 업그레이드 할 때
⬇️ : 종속성을 다운 그레이드 할 때
⏩ : 이전 버전 / 지점에서 기능을 전달할 때
⏪ : 최신 버전 / 지점에서 기능을 백 포트 할 때
👕 : linter / strict / deprecation 경고를 제거 할 때
💄 : UI / style 개선시
♿️ : 접근성을 향상시킬 때
🚧 : WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용
💎 : New Release
🔖 : 버전 태그
🎉 : Initial Commit
🔈 : 로깅을 추가 할 때
🔇 : 로깅을 줄일 때
✨ : 새로운 기능을 소개 할 때
⚡️ : 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용
💡 : 새로운 아이디어, @IDEA주석 태그
🚀 : 배포 / 개발 작업 과 관련된 모든 것
🐘 : PostgreSQL 데이터베이스 별 (마이그레이션, 스크립트, 확장 등)
🐬 : MySQL 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등)
🍃 : MongoDB 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등)
🏦 : 일반 데이터베이스 별 (마이그레이션, 스크립트, 확장명 등)
🐳 : 도커 구성
🤝 : 파일을 병합 할 때