[Git] commit message convention

Junghan Lee·2023년 5월 12일
0

TIL Diary

목록 보기
47/52

Git을 협업에 알맞게, 커뮤니케이션에 유용하게, 깔끔한 가독성을 가지도록 사용하기 위해서 좋은 커밋 메시지를 사용하는 것이 중요하다. 그러기 위해서 커밋 컨벤션을 정리할 필요성이 있다.

1. Commit Message Structure(기본 구조)

제목 ( Type: Subject )
(한 줄 띄어 분리)
본문 (Body)
(한 줄 띄어 분리)
꼬리말(Footer)

2. Commit Type

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

추가적인 문맥 정보를 제공하기 위한 목적으로 괄호 안에 적을 수도 있다.
Feat(navigation)
Fix(db)

3. Subject

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

    Fixed(X) Fix
    Added(X) Add

4. Body

  • 72자 내로 작성
  • 코드 변경 이유를 명확히 작성
  • 무엇을 왜 변경했는지 작성 (어떻게 X)
  • 선택 사항
  • issue tracker ID 명시하고 싶은 경우 작성
  • 유형: #이슈 번호 형식으로 작성
  • 여러 개의 이슈번호는 쉼표(,)로 구분
  • 이슈 트래커 유형은 다음 중 하나 사용

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

    6. 예시

    Feat: 회원 가입 기능 구현

    SMS, 이메일 중복확인 API 개발

    Resolves: #123
    Ref: #456
    Related to: #48, #45

이외 자주 쓰이는 것들

  Fix : 버그 수정
  Fix my test
  Fix typo in style.css
  Fix my test to return undefined
  Fix error when using my function

  Update : Fix와 달리 원래 정상적으로 동작했지만 보완의 개념
  Update harry-server.js to use HTTPS

  Add
  Add documentation for the defaultPort option
  Add example for setting Vary: Accept-Encoding header in zlib.md

  Remove(Clean이나 Eliminate) : ‘unnecessary’, ‘useless’, ‘unneeded’, ‘unused’, ‘duplicated’가 붙는 경우가 많음
  Remove fallback cache
  Remove unnecessary italics from child_process.md

  Refactor : 리팩토링

  Simplify : Refactor와 유사하지만 약한 수정, 코드 단순화

  Improve : 호환성, 테스트 커버리지, 성능, 검증 기능, 접근성 등의 향상
  Improve iOS's accessibilityLabel performance by up to 20%

  Implement : 코드 추가보다 큰 단위의 구현
  Implement bundle sync status

  Correct : 주로 문법의 오류나 타입의 변경, 이름 변경 등에 사용
  Correct grammatical error in BUILDING.md

  Prevent
  Prevent hello handler from saying Hi in hi.js

  Avoid : Prevent는 못하게 막지만, Avoid는 회피(if 등)
  Avoid flusing uninitialized traces

  Move : 코드나 파일의 이동
  Move function from header to source file

  Rename : 이름 변경
  Rename node-report to report

7. Commit Message Emoji (gitmoji)

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

  1. 참고
    https://velog.io/@archivvonjang/Git-Commit-Message-Convention
profile
Strive for greatness

0개의 댓글