본문 바로가기
개발 환경세팅/Git, Github

[Git/Github] Commit Message Convention

by minhyeok.lee 2024. 6. 5.
반응형

naming Convention: 이름 짓는 약속

예) camelCase(카멜 케이스), snake_case(스네이크 케이스), PascalCase(파스칼 케이스)

Git Commit Message Convention

위와 같이 이름을 짓는 약속을 하듯이 Commit message에 대한 약속이다.

협업 시 필수적으로 알아야하는 내용이고 익숙해진다면 Git commit message 기록이 깨끗해지고 누가봐도 이해가 가능해질 수 있다.


 

Commit Meesage의 구조

1. 제목

1. 제목은 최대 50글자 넘지 않기

2. 마침표 및 특수기호 사용하지 않음

3. 첫 글자 대문자, 명령문 사용

4. 개조식 구문으로 작성(간결하고 요점적인 서술)

2. 본문 (생략 가능)

1. 한 줄당 72자 내로 작성

2. 최대한 상세히 작성

3. 어떻게 보다는 '무엇을', '왜' 변경했는지에 대해 작성

3. 꼬리말  (생략 가능)

1. Issue tracker ID 명시하고 싶은 경우에 작성

2. 유형: #이슈 번호 형식으로 작성

3. 여러 개의 이슈번호는 쉼표(,)로 구분

4. 이슈 트래커 유형

Issue Tracker 설명
Fixes 이슈 수정중
Resolves 이슈 해결
Ref 참조할 이슈가 있을 때 사용
Related to 해당 커밋에 관련된 이슈 번호(미해결 시)

ex)

Footer에 Fixes: #1 이라고 작성하고 commit을 할 경우, 자동으로 issue #1과 매칭

또한, Resolves: #1으로 이슈를 해결했다고 명시하면 그 이슈는 사라짐



Commit Type

Type 설명
Feat 새로운 기능 추가
Fix 버그 수정
Refactor 코드 리팩토링
Design css 수정
Chore 빌드 업무 수정, 패키지 매니저 수정
HOTFIX 치명적인 버그를 급하게 수정
Docs 문서 수정
Style 코드 Formatting, 세미콜론 누락
Rename 파일 및 폴더구조 변경
Test 테스트 코드, 리팩토링 테스트 코드 추가
Remove 파일 삭제
Modify 코드 단순 수정
Init 프로젝트 초기 생성

Commit Templete

# 제목은 최대 50글자까지 아래에 작성: ex) Feat: Add signin

# 본문은 최대 72글자까지 아래에 작성  

# 꼬릿말은 아래에 작성: ex) Github issue #23  

# --- COMMIT END ---  
#   제목 <Type> 리스트 
#   feat        : 기능 (새로운 기능)  
#   fix         : 버그 (버그 수정)  
#   refactor    : 리팩토링  
#   design      : CSS 등 사용자 UI 디자인 변경  
#   comment     : 필요한 주석 추가 및 변경  
#   style       : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)  
#   docs        : 문서 수정 (문서 추가, 수정, 삭제, README)  
#   test        : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)  
#   chore       : 기타 변경사항 (빌드 스크립트 수정, assets, 패키지 매니저 등)  
#   init        : 초기 생성  
#   rename      : 파일 혹은 폴더명을 수정하거나 옮기는 작업만 한 경우  
#   remove      : 파일을 삭제하는 작업만 수행한 경우  
#   제목 첫 글자를 대문자  
#   제목은 명령문
#   마침표 및 특수기호 금지
#   과거 시제는 사용하지 않고 동사
#   간결하고 요점 중심, 개조식 구문으로 작성
# ------------------  
#   본문은 필수가 아닌 optioanl  
#   제목과 본문을 한 줄 띄워 분리
#   본문은 "어떻게" 보다 "무엇을", "왜"를 설명  
#   본문에 여러줄의 메시지를 작성할 땐 "-"로 구분  
# ------------------  
#   꼬리말은 필수가 아닌 optioanl  
#   꼬리말 <Issue Tracker> 리스트
#   Fixes        :이슈 수정중 (아직 해결되지 않은 경우)  
#   Resolves     : 이슈 해결했을 때 사용  
#   Ref          : 참고할 이슈가 있을 때 사용  
#   Related to   : 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)  
#   ex) Fixes: #7 Related to: #2, #3

1. 본인이 원하는 경로에 gitmessage.txt 파일을 생성

2. 내용은 위 템플릿 내용 삽입 (#은 주석)

3. 아래 명령을 입력한다. (gitmeesage.txt 파일이 있는 파일 경로만 변경)

$ git config --global commit.template [본인의 폴더 경로]\.gitmessage.txt

 

4. 아래 명령어를 통해 앞전에 만들었던 vim의 메시지가 보이는 것을 확인

$ git commit

 


Commit Message Emogi(gitmogi)

Emoji 설명
🎨 코드의 형식 / 구조를 개선 할 때
📰 새 파일을 만들 때
📝 사소한 코드 또는 언어를 변경할 때
🐎 성능을 향상시킬 때
📚 문서를 쓸 때
🐛 버그 reporting할 때, @FIXME 주석 태그 삽입
🚑 버그를 고칠 때
🐧 리눅스에서 무언가를 고칠 때
🍎 Mac OS에서 무언가를 고칠 때
🏁 Windows에서 무언가를 고칠 때
🔥 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께
🚜 파일 구조를 변경할 때 . 🎨과 함께 사용
🔨 코드를 리팩토링 할 때
☔️ 테스트를 추가 할 때
🔬 코드 범위를 추가 할 때
💚 CI 빌드를 고칠 때
🔒 보안을 다룰 때
⬆️ 종속성을 업그레이드 할 때
⬇️ 종속성을 다운 그레이드 할 때
이전 버전 / 지점에서 기능을 전달할 때
최신 버전 / 지점에서 기능을 백 포트 할 때
👕 linter / strict / deprecation 경고를 제거 할 때
💄 UI / style 개선시
♿️ 접근성을 향상시킬 때
🚧 WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용
💎 New Release
🔖 버전 태그
🎉 Initial Commit
🔈 로깅을 추가 할 때
🔇 로깅을 줄일 때
새로운 기능을 소개 할 때
⚡️ 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용
💡 새로운 아이디어, @IDEA주석 태그
🚀 배포 / 개발 작업 과 관련된 모든 것
🐘 PostgreSQL 데이터베이스 별 (마이그레이션, 스크립트, 확장 등)
🐬 MySQL 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등)
🍃 MongoDB 데이터베이스 특정 (마이그레이션, 스크립트, 확장 등)
🏦 일반 데이터베이스 별 (마이그레이션, 스크립트, 확장명 등)
🐳 도커 구성
🤝 파일을 병합 할 때

 

위 이모지를 커밋메시지 가장 앞에 추가하면 더욱 좋다.

 

자세한 내용은 아래에서 확인 가능하다.

https://gitmoji.dev/

 

gitmoji

:truck: Move or rename resources (e.g.: files, paths, routes).

gitmoji.dev

 

반응형

댓글