Git 커밋 메시지 규칙 - JeroCaller/Spoon-Suits GitHub Wiki

  1. 기본적으로는 References [1]의 내용을 기준으로 한다.

  2. 달리 명시하지 않는 한 기본적으로는 Udacity Git Commit Message Style Guide 를 기준으로 한다.

  3. 커밋 메시지 타입은 다음과 같이 정한다.

type 설명 비고 versioning (major, minor, patch, none)
feat 새 기능 또는 기존 기능 수정 “새 기능”과 “기존 기능 수정” 두 가지 의미를 모두 함유하므로 되도록 커밋 subject 또는 body에 새 기능인지 기존 기능 수정인지를 명시하도록 한다. minor
fix 버그 또는 에러 수정 main 브랜치에서 발견한 버그건, feature 브랜치에서 발견한 버그건 모두 이 타입을 사용한다. ”기존 기능 수정”, “문서 수정”, “코드 리팩토링” 등을 이 타입과 혼동하지 않도록 한다. patch
docs 문서 작성 및 수정, 삭제 등의 문서 관련 작업은 모두 이 타입으로 설정한다. 여기서는 자바 언어를 기반으로 하므로, javadoc 또는 주석을 대상으로 한다. - patch
style 포맷팅, 줄 바꿈 등 코드의 작성 스타일을 변경하고자 할 때 사용. refactor와 혼동하지 않도록 한다. patch
refactor 기존 코드를 기능 변화 없이 유지보수, 코드 개선 등의 목적을 위해 코드 구조를 변경하는 경우. 성능 향상도 여기에 해당한다. 특정 기능 삭제를 위해 소스 코드의 일부만 지우거나 아예 파일 또는 패키지를 삭제하는 경우도 여기에 포함시킨다. patch
test 테스트 관련 작업. 테스트 코드 작성, 수정, 리팩토링도 모두 이 타입을 거친다. 테스트 코드에서의 리팩토링은 refactor 타입이 아닌 test 타입으로 정한다. patch
chore 배포, 빌드, 설정(Configure) 등의 프로젝트 외 작업 시 - none

3-1. (2025-04-21 추가) mathieudutour/github-tag-action를 이용하여 라이브러리 배포 시 자동으로 새 버전으로 release 되도록 설정하였다. 이로 인해 새 버전 번호 부여 규칙도 해당 action에 명시된 규칙을 따른다. 커밋 타입에 따라 어떤 버전 번호(major, minor, patch 중)가 자동으로 증가하는지는 위 표의 "versioning" 열 참고.

  • major의 경우 commit type에 상관없이 commit body에 "BREAKING CHANGE" 항목이 있으면 자동 버전 번호 부여되도록 설정함. 정확히는 다음의 예시처럼 작성해야함.
perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons.
  1. 커밋 Footer는 관련 있는 이슈 트래킹 ID 언급용으로만 그 사용 용도를 제한한다.
    4-1. 이슈 트래킹 ID 언급을 위한 키워드로는 다음의 키워드만 사용한다.
    - Resolves : 특정 이슈 해결 시. 새 기능 개발, 기존 기능 수정, 리팩토링, 문서 작업, 테스트 추가, 버그 해결 등 모든 작업들에 대해 적용 가능하다.
    - (2025-03-28) 추가 정보 : 실험 결과, 둘 이상의 이슈 ID를 언급하면 Github에서 해당 이슈들을 자동으로 close해주지 않는다. 따라서 Resolves에서는 하나의 이슈 ID만을 언급해야함.
    - See also : 해당 커밋이 다른 어떤 이슈들과 연관있는 이슈라 참고하도록 할 때 사용.

  2. (2025-03-28 추가) 커밋 메시지에 @ 문자를 포함시키지 않는다.
    해당 표시는 깃허브에서는 다른 사용자를 멘션하는 기능이 있는데, 이 기능은 이 개인 프로젝트에서 전혀 필요하지 않기 때문. 엉뚱한 다른 깃허브 사용자를 멘션하는 실수를 방지하기 위함. 자바의 어노테이션을 언급하고자 한다면 "어노테이션", "애너테이션", "annotation"이라고 명시.


References