Conventional Commits
2023. 10. 4. 14:20ㆍ개발 환경/Git
🔗 공식 문서 : https://www.conventionalcommits.org/ko/v1.0.0/
conventional commits 작성을 위한 commit message 구조와 구성요소는 아래와 같다.
구조
<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
<타입>[적용 범위(선택 사항)]: <설명>
[본문(선택 사항)]
[꼬리말(선택 사항)]
구성요소
[머리말(Commit Message Header)]
<type>(<optional scope>): <short summary>
<타입(type)>
build: 시스템 또는 외부 종속성에 영향을 미치는 변경사항 (npm, gulp, yarn 레벨)
ci: ci 구성파일 및 스크립트 변경
chore: 패키지 매니저 설정할 경우, 코드 수정 없이 설정을 변경
docs: documentation 변경
feat: 새로운 기능
fix: 버그 수정
perf: 성능 개선
refactor: 버그를 수정하거나 기능을 추가하지 않는 코드 변경, 리팩토링
style: 코드 의미에 영향을 주지 않는 변경사항 (white space, formatting, colons)
test: 누락된 테스트 추가 또는 기존 테스트 수정
revert: 작업 되돌리기
<설명(short summary)>
변경에 대한 간결한 설명
- 명령형, 현재 시제 사용
- 첫글자를 대문자로 사용하지 않음
- 끝에 마침표(.) 사용하지 않음
[본문(Commit Message Body)]
- header 다음에 한 줄 띄우고 시작해야 한다.
- 자유 형식이며 개행으로 구분된 단락으로 구성할 수 있음.
- summary와 마찬가지로 명령형, 현재 시제 사용
- 변경 동기 설명. 왜 변경하는지를 설명. 변경의 영향을 설명하기 위해 이전 동작과 새로운 동작의 비교를 포함할 수 있음.
[꼬리말(Commit Message Footer)]
- body 다음에 한 줄 띄우고 시작해야 한다.
- 하위호환성이 없는 변경의 경우 footer에 명시한다면
BREAKING CHANGE
(전체 대문자) 그 다음 콜론(:) 과 공백이 오고 설명을 기술해야 한다.
ex)BREAKING CHANGE: 설명
- Jira Issue ID나 참조할 다른 MR ID를 입력할 수 있다.
규칙 (rules)
- 모든 commit message는
<타입> [적용 범위(선택 사항)]: <설명>
을 포함해야 한다. - <설명>은 타입쪽에 위치한 콜론 뒤에 한 개의 공백을 유지하고 작성되어야 한다.
ex)<타입> [적용 범위(선택 사항)]: 여기부터 설명 작성 가능
- 본문(선택 사항)을 작성할 경우에는 <설명> 사이에 빈 행으로 구분되어야 한다.
- 본문은 코드 변경의 의도를 포함, 수정 내역을 간단하게 볼 수 있어야 한다.
- 꼬리말(선택 사항)을 작성할 경우에는 <본문> 사이에 빈 행으로 구분되어야 한다.
- 프로그램의 단절적 변경(breaking change)이 있을 경우 <타입> 뒤에 !로 표시하거나 꼬리말에 설명이 있어야 한다.
- 단절적 변경에 대해 꼬리말로 설명할 경우, 대문자 문자열 BREAKING CHANGE과 뒤따르는 콜론(:), 공백, 그리고 설명으로 구성되어야 한다.
ex)BREAKING CHANGE: config 파일의 `extends` 키는 이제 다른 config 파일의 확장에 사용됨
- conventional commit을 구성하는 정보의 단위는 반드시 대문자여야 하는 BREAKING CHANGE를 제외하고 구현자에 의해 대소문자를 구분하는 것으로 처리되어서는 안된다.
type/scope 뒤에 !
를 붙이거나 footer 영역에 BREAKING CHANGE
라고 입력하면 breaking API chagne가 있다는 것을 의미 (semantic version에서 MAJOR
와 관련)
feat
, fix
외 type들은 Conventional Commits 규격에 의해 정의되지 않았고, Semantic Versioning에도 영향을 주지 않음. (BREAKING CHANGE
를 사용한 경우 예외)
scope는 괄호 안에 입력하며, commit의 타입이나 추가적인 정보를 제공하기 위한 목적으로 사용될 수 있음.
ex) feat(core): arary parse 기능 추가
콜론(:)과 공백은 필수적으로 있어야 한다.
예시
feat: 제공된 config 개체가 다른 config를 확장할 수 있도록 허용
fix!: Node 6에 대한 지원 중단
BREAKING CHANGE: Node 6에서 사용할 수 없는 JavaScript 기능을 사용합니다.
장점
- Change Log를 자동으로 생성할 수 있다.
- 프로젝트를 보는 사람이 변화를 쉽게 이해할 수 있다.
- 빌드와 배포에 도움이 된다.
Reference
'개발 환경 > Git' 카테고리의 다른 글
Git auto CRLF설정 (0) | 2021.10.07 |
---|---|
Windows용 SourceTree에서 Authentication failed 오류 (0) | 2021.05.26 |
macOS용 SoutceTree에서 Git Push 안되는 오류 (2) | 2019.07.11 |