Git Commit 컨벤션 구조에는 대표적으로 두가지 방식으로 사용한다.
컨벤션을 지키는 구조 또는 깃이모지를 활용한 메시지 작성방법으로 두가지에 대해 알아보자
Commit 메세지 구조
기본적인 commit 메시지 구조는 제목, 본문, 꼬리말 세가지 파트로 나누고, 각 파트는 빈줄을 두어 구분한다.
type : subject
body : content
footer : content
Commit Type
타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자로 한다.
태그 : 제목의 형태로 작성
- feat : 새로운 기능 추가
- fix : 버그 수정
- docs : 문서 수정
- style : 코드 포멧팅, 세미콜론 누락, 코드 변경이 없는 경우
- refactor : 코드 리펙토링
- test : 테스트 코드, 리팩토링 테스트 코드 추가
- chore : 빌드 업무 수정, 패키지 매니저 수정
Subject
- 제목은 최대 50글자가 넘지 않도록하고 마침표 및 특수기호는 사용하지 않는다.
- 영문으로 표기하는 경우 동사(원형)를 가장 앞에 두고 첫 글자는 대문자로 표기한다. (과거 시제 사용X)
- 서술형 문장이 아닌 간결하고 요점적으로 작성
Fixed -> Fix
Added -> Add
Modified -> Modify
Body
- 본문은 한 줄당 72자 내로 작성한다.
- 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
- 본문 내용은 어떻게 변경했는지 보다 무엇을 변경했는지 또는 왜 변경했는지를 설명한다.
Footer
- 꼬리말을 optional이고 이슈 트래커 ID를 작성한다.
- 꼬리말은 "유형: #이슈번호" 형식으로 사용한다.
- 여러개의 이슈번호를 적을 때는 쉼표로 구분한다.
- 이슈 트래커 유형은 다음 중 하나를 사용한다.
- Fixes : 이슈 수정중 (아직 해결되지 않은 경우)
- Resolves : 이슈를 해결했을 때 사용
- Ref : 참고할 이슈가 있을 때 사용
- Related to : 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)
ex) Fixes: #45 Related to: #34, #23
Commit 예시
Feat : "회원가입 기능 구현"
SMS, 이메일 중복확인 API 개발
Resolves: #123
Ref: #456
Related to: #48, #45
Gitmoji 사용하기
| icon | 코드 | 설명 | 원문 |
| 🎨 | :art: | 코드의 구조 / 형태 개선 | Improve structure / format of the code. |
| ⚡️ | :zap: | 성능 개선 | Improve performance. |
| 🔥 | :fire: | 코드 / 파일 삭제 | Remove code or files. |
| 🐛 | :bug: | 버그 수정 | Fix a bug. |
| 🚑 | :ambulance: | 긴급 수정 | Critical hotfix. |
| ✨ | :sparkles: | 새 기능 | Introduce new features. |
| 📝 | :memo: | 문서 추가 / 수정 | Add or update documentation. |
| 🚀 | :rocket: | 배포 / 개발작업 | Deploy stuff. |
| 💄 | :lipstick: | UI / 스타일 파일 추가 / 수정 | Add or update the UI and style files. |
| 🎉 | :tada: | 프로젝트 시작 | Begin a project. |
| ✅ | :white_check_mark: | 테스트 추가 / 수정 | Add or update tests. |
| 🔒 | :lock: | 보안 이슈 수정 | Fix security issues. |
| 🔐 | :closed_lock_with_key: | 시크릿 내용 추가 | Add or update secrets. |
| 🔖 | :bookmark: | 릴리즈 / 버전 태그 | Release / Version tags. |
| 🚨 | :rotating_light: | 컴파일러 경고 수정 | Fix compiler / linter warnings. |
| 🚧 | :construction: | 진행중인 작업 | Work in progress. |
| 💚 | :green_heart: | CI 빌드 수정 | Fix CI Build. |
| 📌 | :pushpin: | 특정 버전 의존성 고정 | Pin dependencies to specific versions. |
| 👷 | :construction_worker: | CI 빌드 시스템 추가 / 수정 | Add or update CI build system. |
| 📈 | :chart_with_upwards_trend: | 분석, 추적 코드 추가 / 수정 | Add or update analytics or track code. |
| ♻️ | :recycle: | 코드 리팩토링 | Refactor code. |
| ➕ | :heavy_plus_sign: | 의존성 추가 | Add a dependency. |
| ➖ | :heavy_minus_sign: | 의존성 제거 | Remove a dependency. |
| 🔧 | :wrench: | 구성 파일 추가 / 삭제 | Add or update configuration files. |
| 🔨 | :hammer: | 개발 스크립트 추가 / 수정 | Add or update development scripts. |
| 🌐 | :globe_with_meridians: | 국제화/현지화 | Internationalization and localization. |
| 💩 | :poop: | 똥싼 코드 | Write bad code that needs to be improved |
| ⏪ | :rewind: | 변경 내용 되돌리기 | Revert changes. |
| 🔀 | :twisted_rightwards_arrows: | 브랜치 합병 | Merge branches. |
| 📦 | :package: | 컴파일된 파일 추가 / 수정 | Add or update compiled files or packages. |
| 👽 | :alien: | 외부 API 변화로 인한 수정 | Update code due to external API changes. |
| 🚚 | :truck: | 리소스 이동, 이름 변경 | Move or rename resources |
| 📄 | :page_facing_up: | 라이센스 추가 / 수정 | Add or update license. |
| 💡 | :bulb: | 주석 추가 / 수정 | Add or update comments in source code. |
| 🍻 | :beers: | 술 취해서 쓴 코드 | Write code drunkenly. |
| 🗃 | :card_file_box: | 데이버베이스 관련 수정 | Perform database related changes. |
| 🔊 | :loud_sound: | 로그 추가 / 수정 | Add or update logs. |
| 🙈 | :see_no_evil: | .gitignore 추가 / 수정 | Add or update a .gitignore file. |
인텔리제이에서 Gitmoji 플러그인을 제공하기 때문에 설치해서 사용하면 편리하게 커밋메시지들을 관리할 수 있다 !

Reference
- https://treasurebear.tistory.com/70