Commit Convential이란
- 커밋 메시지에 사람과 기계가 모두 이해할 수 있는 의미를 부여하기 위한 경량화된 규약이다.
- 이 규약은 커밋 메시지를 일관된 형식으로 구조화하여 명시적인 커밋 히스토리를 유지하도록 돕는다.
- Semantic Versioning과 결합되어 커밋만으로 MAJOR·MINOR·PATCH 버전 변경을 자동으로 결정할 수 있도록 설계.
커밋 메시지 구조
헤더
- 형식 :
<type>[optional scope]: <description>
- type : feat, fix, docs, style, refactor, perf, test, chore 등
- scope : 선택적으로 괄호 안에 범위를 명시하여 변동 영역을 구체화(feat(parser): ...)
- description : 변경 내역을 간결하게 요약하며, 명령문 형태로 작성
본문
- 용도 : 헤더만으로 설명이 부족할 때 자세한 변경 이유 및 맥락을 기술
- 형식 : 빈 줄로 헤더와 구분 후 자유 형식의 여러 문단가능
꼬리말
- Breking Chnage : 호환성을 깨는 변경에는 이곳(꼬리말)에 설명 또는 헤더에 !를 추가(refactor!:...)
1.3 꼬리말(Footer)
BREAKING CHANGE: 호환성을 깨는 변경에는 BREAKING CHANGE: 설명 또는 헤더에 !를 추가 (refactor!: …)
이슈 트래킹: Closes #123, Refs #456 등 이슈 번호 연동 정보를 포함 가능
주요 커밋 타입
타입 | 역할 | SemVer 연계 |
---|---|---|
feat | 새로운 기능 추가 | MINOR 버전 추가 |
fix | 버그 수정 | PATCH 버전 증가 |
docs | 문서 변경 | - |
style | 코드 포멧, 세미콜론 누락 등 동작에 영향 없는 스타일 변경 | - |
refactor | 코드 리팩토링(기능 변경 없음) | - |
perf | 성능개선 | - |
test | 테스트 코드 추가/수정 | - |
chroe | 빌드 업무 수정, 패키지 매니저 설정 등 기타 변경 | - |
build | 빌드 시스템 또는 외부 종속성 변경 (예: 패키지 버전 업그레이드, Webpack 설정 변경) | - |
ci | CI 구성 파일 및 스크립트 변경 (예: GitHub Actions, Travis CI 설정) | - |
revert | 이전 커밋을 되돌릴 때 사용 | 되돌리는 변경 내용에 따라 처리 |
예시
- feat(auth): add JWT authentication support
- 신기능 추가를 나타내며, auth 범위(scope)에 JWT 인증 기능이 도입되었음을 명시
- fix(ui): resolve button alignment issue
- UI 버튼 정렬 문제를 수정했음을 나타냄
- refactor!: drop support for Node 6
- !를 통해 BREAKING CHANGE를 표시하며, 이전 버전(Node 6)과의 호환성이 깨진다는 점을 명시
- feat: improve logging
- BREAKING CHANGE: log format has changed, clients must update parser
- 본문 없이 바로 꼬리말로 BREAKING CHANGE를 기술한 예시
장점
- 자동화 도구 호환성 : 릴리스 노트, 버전 자동 증가, 변경 로그 생성 도구와 즉시 통합 가능
- 일관된 히스토리 : 팀 전반의 커밋 메시지 스타일을 통일하여 가독성과 검색 효율성 향상
- 명확한 버전 관리 : 커밋 유형에 따른 SemVer 매핑으로 배포 전략 수립이 용이
- 협업 개선 : 변경 의도를 헤더만으로도 파악 가능해 코드 리뷰 및 배포 과정에서의 의사소통 비용 감소
반응형
'AI,Notion,GitHub > GitHub' 카테고리의 다른 글
[GITHUB]Actiond을 통한 Android 자동화 (0) | 2025.02.23 |
---|---|
Library 배포용 Apache License 받기(Android Studio) (0) | 2025.02.18 |
Git-Flow (0) | 2025.02.04 |