프로젝트마다 적용되는 Commit Message가 좀 다른 것 같아 통일감을 주기 위해 Commit Message Convention에 대해 알아보았고, 정리하게 되었다.
Git Commit Message Convention (커밋 메시지 규약)
Git Commit Message는 메시지를 일관성 있게 작성하여 코드 변경 내역을 명확히 하고, 나중에 변경 사항을 쉽게 추적할 수 있도록 도와준다.
가장 널리 사용되는 규약 중 하나인 Conventional Commits 규약이다.
✅ Conventional Commits 형식
타입(범위): 제목
(한줄 띄어 분리)
본문
(한줄 띄어 분리)
푸터
✔️ 타입 Type
- Feat : 새로운 기능 추가
- Fix : 버그 수정
- Design : CSS 등 사용자 UI 디자인 변경
- !HOTFIX : 급하게 치명적인 버그를 고쳐야 하는 경우
- Docs : 문서 수정
- Style : 코드 포맷팅, 세미콜론 누락 등 코드 변경이 없는 경우
- Comment : 필요한 주석 추가 및 변경
- Refactor : 코드 리팩토링 (기능 변화 없을 경우)
- Perf : 성능 향상 관련 변경
- Test : 테스트 코드 추가 / 수정
- Chore : 빌드 프로세스 또는 보조 도구와 관련된 수정, 라이브러리 추가, 생성된 파일 변경 등
- Rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
- Remove : 파일을 삭제하는 작업만 수행한 경우
✔️ 범위 Scope (선택 사항)
안적어도 상관없는 선택 사항이며 변경 사항의 범위를 나타낸다.
✔️ 제목 Subject
- 첫 글자는 소문자로 작성
- 간결하게 작성한다 (50자 이내)
- 마침표 및 특수기호는 사용하지 않음
- 영문으로 작성하는 경우 동사(원형)을 가장 앞에 명령어로 작성 (but, 과거시제 사용 X)
✔️ 본문 Body (선택 사항)
- 한 줄에 72자 이내로 작성함
- 최대한 상세히 작성. 코드 변경의 이유를 명확히 작성할 수록 좋은 것
- 어떻게 보다 무엇이 왜 변경되었는지 설명!
✔️ 푸터 Footer (선택 사항)
- 관련된 이슈 번호를 참조하거나 중요 정보를 추가한다.
- 이슈 닫을 때 `Fixes #123` 처럼 작성한다.
- 이슈 트래커 유형은 다음 중 하나를 사용
- Fixes: 이슈 수정중 (아직 해결되지 않은 경우)
- Resolves: 이슈를 해결했을 때 사용
- Ref: 참고할 이슈가 있을 때 사용
- Related to: 해당 커밋에 관련된 이슈 번호 (아직 해결되지 않은 경우)
추가 : gitmoji
Emoji | Description |
🎨 | 코드의 형식 / 구조를 개선 할 때 |
📰 | 새 파일을 만들 때 |
📝 | 사소한 코드 또는 언어를 변경할 때 |
🐎 | 성능을 향상시킬 때 |
📚 | 문서를 쓸 때 |
🐛 | 버그 reporting할 때, @FIXME 주석 태그 삽입 |
🚑 | 버그를 고칠 때 |
🐧 | 리눅스에서 무언가를 고칠 때 |
🍎 | Mac OS에서 무언가를 고칠 때 |
🏁 | Windows에서 무언가를 고칠 때 |
🔥 | 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께 |
🚜 | 파일 구조를 변경할 때 . 🎨과 함께 사용 |
🔨 | 코드를 리팩토링 할 때 |
☔️ | 테스트를 추가 할 때 |
🔬 | 코드 범위를 추가 할 때 |
💚 | CI 빌드를 고칠 때 |
🔒 | 보안을 다룰 때 |
⬆️ | 종속성을 업그레이드 할 때 |
⬇️ | 종속성을 다운 그레이드 할 때 |
⏩ | 이전 버전 / 지점에서 기능을 전달할 때 |
⏪ | 최신 버전 / 지점에서 기능을 백 포트 할 때 |
👕 | linter / strict / deprecation 경고를 제거 할 때 |
💄 | UI / style 개선시 |
♿️ | 접근성을 향상시킬 때 |
🚧 | WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용 |
💎 | New Release |
🔖 | 버전 태그 |
🎉 | Initial Commit |
🔈 | 로깅을 추가 할 때 |
🔇 | 로깅을 줄일 때 |
✨ | 새로운 기능을 소개 할 때 |
⚡️ | 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용 |
💡 | 새로운 아이디어, @IDEA주석 태그 |
🚀 | 배포 / 개발 작업 과 관련된 모든 것 |
🐘 | PostgreSQL 데이터베이스 별 (마이그레이션, 스크립트, 확장 등) |
🐬 | MySQL 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등) |
🍃 | MongoDB 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등) |
🏦 | 일반 데이터베이스 별 (마이그레이션, 스크립트, 확장명 등) |
🐳 | 도커 구성 |
🤝 | 파일을 병합 할 때 |
참고
'Git' 카테고리의 다른 글
[Github] Issue, Issue Branch를 활용해 Project 관리해보자! (0) | 2024.06.18 |
---|---|
[GitHub] Repository Public / Private 서로 변경하는 법 (0) | 2024.03.15 |
[Git] Git을 사용하는 이유 / 간단한 사용법 (0) | 2024.03.14 |