[Git] Commit Message Convention

SUNNY_KIM·2023년 12월 31일
1
post-thumbnail

커밋 메세지 컨벤션이란?


정의

커밋 메시지 컨벤션은 프로젝트에서 사용되는 규칙이나 패턴을 따르는 커밋 메시지의 형식을 말합니다. 이 규칙은 주로 프로젝트의 품질을 향상시키고 협업을 더 효과적으로 만들기 위해 사용됩니다.


장점

  1. 일관성과 가독성 유지:
    • 커밋 컨벤션은 일관된 형식으로 커밋 메시지를 작성하도록 도와줍니다.
    • 일관성 있는 메시지는 코드 변경 사항을 이해하기 쉽게 만들어 코드 리뷰 및 협업을 간편하게 합니다.

  2. 프로젝트 이력 관리:
    - 좋은 커밋 메시지는 코드 변경 이력을 체계적으로 관리할 수 있게 합니다.
    - 특정 기능이나 이슈에 대한 변경 사항을 쉽게 찾을 수 있으며, 코드 상태를 원하는 시점으로 돌아가기 용이합니다.

  3. 자동화 및 통합 향상:
    • 커밋 컨벤션은 자동화된 프로세스와의 통합을 용이하게 합니다.
    • 일부 프로젝트는 커밋 메시지를 기반으로 자동으로 버전 관리, 릴리스 노트 생성 등을 수행하여 효율성을 높이고 오류를 방지할 수 있습니다.


커밋 메세지 컨벤션 적용하기


1. Commit Message 구조

  • 기본 적인 커밋 메시지 구조는 제목, 본문, 꼬리말 세가지 파트로 나누고, 각 파트는 빈줄을 두어 구분한다.

type : subject                <----- 제목

body                           
<----- 본문

footer                         
<----- 꼬리말



2. Commit Type

커밋메시지의 타입(type) 은 아래와 같은 규약을 지키면서 작성한다

태그: 제목

타입은 " tag: subject " 으로 구성되며, 태그는 영어로 쓰되, 첫 문자는 대문자 로 한다.
※ (  : 뒤에 space 가 있음)

_ex) Fix: Modified user config (Feat 가 태그이고, Modify user config 가 제목임)


Tag NameDescription
Feat새로운 기능을 추가
Fix버그 수정
DesignCSS 등 사용자 UI 디자인 변경
!BREAKING CHANGE커다란 API 변경의 경우
!HOTFIX급하게 치명적인 버그를 고쳐야하는 경우
Style코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
Refactor프로덕션 코드 리팩토링
Comment필요한 주석 추가 및 변경
Docs문서 수정
Test테스트 코드, 리펙토링 테스트 코드 추가, Production Code 변경 없음
Chore빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음
Rename파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
Remove파일을 삭제하는 작업만 수행한 경우



3. Subject

제목은 다음의 규칙을 지킨다.

  • 제목은 50글자 이내로 작성한다.
  • 첫글자는 대문자로 작성한다.
  • 마침표 및 특수기호는 사용하지 않는다.
  • 영문으로 작성하는 경우 동사(원형)을 가장 앞에 명령어로 작성한다.
  • 과거시제는 사용하지 않는다.
  • 간결하고 요점적으로 즉, 개조식 구문으로 작성한다.
* Fixed --> Fix
* Added --> Add
* Modified --> Modify



4. Body

본문은 다음의 규칙을 지킨다.

  • 72이내로 작성한다.
    • 최대한 상세히 작성한다. (코드 변경의 이유를 명확히 작성할수록 좋다)
    • 어떻게 변경했는지보다 무엇을, 왜 변경했는지 작성한다.



꼬릿말은 다음의 규칙을 지킨다.

  • 꼬리말은 optional이고 이슈 트래커 ID를 작성한다.
  • 꼬리말은 "유형: #이슈 번호" 형식으로 사용한다.
  • 여러 개의 이슈 번호를 적을 때는 쉼표(,)로 구분한다.
  • 이슈 트래커 유형은 다음 중 하나를 사용한다.

    - Fixes : 이슈 수정중 (아직 해결되지 않은 경우)
    - Resolves : 이슈를 해결했을 때 사용
    - Ref : 참고할 이슈가 있을 때 사용
    - Related to : 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)

    ex ) Fixes: #45 Related to: #34, #23



6. Commit 예시

Feat: "회원 가입 기능 구현"
  
SMS, 이메일 중복확인 API 개발
  
Resolves: #123
Ref: #456
Related to: #48, #45



7. Commit Message Emoji (gitmoji)

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



참고

[Git] Commit Message Convension (협업을 위한 git 커밋컨벤션)
Git | git 커밋 컨벤션 설정하기

profile
호기심이 많은 백엔드 개발자

0개의 댓글