Git 커밋 메시지 규칙 - JeroCaller/Spoon-Suits GitHub Wiki
-
기본적으로는 References [1]의 내용을 기준으로 한다.
-
달리 명시하지 않는 한 기본적으로는 Udacity Git Commit Message Style Guide 를 기준으로 한다.
-
커밋 메시지 타입은 다음과 같이 정한다.
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.
-
커밋 Footer는 관련 있는 이슈 트래킹 ID 언급용으로만 그 사용 용도를 제한한다.
4-1. 이슈 트래킹 ID 언급을 위한 키워드로는 다음의 키워드만 사용한다.
-Resolves
: 특정 이슈 해결 시. 새 기능 개발, 기존 기능 수정, 리팩토링, 문서 작업, 테스트 추가, 버그 해결 등 모든 작업들에 대해 적용 가능하다.
- (2025-03-28) 추가 정보 : 실험 결과, 둘 이상의 이슈 ID를 언급하면 Github에서 해당 이슈들을 자동으로 close해주지 않는다. 따라서 Resolves에서는 하나의 이슈 ID만을 언급해야함.
-See also
: 해당 커밋이 다른 어떤 이슈들과 연관있는 이슈라 참고하도록 할 때 사용. -
(2025-03-28 추가) 커밋 메시지에
@
문자를 포함시키지 않는다.
해당 표시는 깃허브에서는 다른 사용자를 멘션하는 기능이 있는데, 이 기능은 이 개인 프로젝트에서 전혀 필요하지 않기 때문. 엉뚱한 다른 깃허브 사용자를 멘션하는 실수를 방지하기 위함. 자바의 어노테이션을 언급하고자 한다면 "어노테이션", "애너테이션", "annotation"이라고 명시.
References