목적
Git 커밋 메시지 컨벤션은 팀원 간의 협업을 원활하게 하고, 코드 변경 내역을 명확히 기록하기 위한 표준화된 작성 규칙입니다. 이를 통해 코드 리뷰, 디버깅, 변경 추적이 쉬워집니다.
기본 원칙
- 명확성: 커밋 메시지는 변경 내용을 간결하고 명확하게 설명해야 합니다.
- 일관성: 팀 전체가 동일한 형식을 따르도록 합니다.
- 짧고 간결: 요점을 빠르게 전달할 수 있도록 간결하게 작성합니다.
- 영어 또는 팀 언어: 팀의 언어 정책에 따라 영어 또는 한국어로 작성 (이 문서에서는 영어 기준으로 작성).
커밋 메시지 구조
커밋 메시지는 다음과 같은 구조를 따릅니다:
<타입>(<영향 범위>): <짧은 설명> <빈 줄> <상세 설명 (선택 사항)>
1. 타입 (Type)
커밋의 목적을 나타내는 접두사입니다. 아래는 일반적으로 사용되는 타입들입니다:
feat
: 새로운 기능 추가
fix
: 버그 수정
docs
: 문서 수정 (README, API 문서 등)
style
: 코드 포맷팅, 세미콜론 추가 등 (동작에 영향 없음)
refactor
: 코드 리팩토링 (기능 변경 없이 코드 개선)
test
: 테스트 추가/수정
chore
: 기타 작업 (빌드, 설정 파일 수정 등)
build
: 빌드 시스템 또는 외부 의존성 변경
ci
: CI/CD 설정 변경
perf
: 성능 개선
2. 영향 범위 (Scope)
커밋이 영향을 미치는 모듈, 파일, 또는 기능 영역을 명시합니다. 예:
auth
: 인증 관련
ui
: 사용자 인터페이스
api
: API 관련
db
: 데이터베이스
- (구체적인 모듈/기능 이름 사용 가능)
3. 짧은 설명 (Subject)
- 50자 이내로 간결하게 작성
- 명령형 문장 사용 (예: "Add", "Fix", "Update")
- 첫 글자는 대문자, 마침표는 생략
- 예:
Add user login validation
4. 상세 설명 (Body, 선택 사항)
- 72자 이내로 줄바꿈
- 변경 이유, 배경, 또는 세부 사항 설명
- 불필요한 경우 생략 가능
5. 푸터 (Footer, 선택 사항)
- 이슈 트래커 ID, 관련 PR 번호 등 추가 정보
- 예:
Closes #123
,Related to #456
예시
기능 추가
feat(auth): Add JWT token validation Add middleware to validate JWT tokens for protected routes. Closes #123
버그 수정
fix(ui): Fix button alignment issue on mobile Correct CSS padding to align buttons properly on small screens.
문서 수정
docs(readme): Update installation instructions Add detailed steps for setting up the project locally.
리팩토링
refactor(api): Simplify user fetch logic Extract user fetch logic into a reusable service function.
기타 작업
chore(deps): Update package.json dependencies Bump lodash version to 4.17.21 for security patch.
추가 가이드라인
- 커밋 단위: 하나의 커밋은 논리적으로 하나의 변경 사항만 포함해야 합니다.
- 언어: 팀 정책에 따라 영어 또는 한국어 사용. 영어 사용 시 미국식 영어 권장.
- 명확한 동사: "Add", "Fix", "Remove", "Update" 등 명확한 동사를 사용하세요.
- 과거형 피하기: "Added" 대신 "Add"를 사용해 명령형 유지.
- 이슈 연결: 가능하면 커밋 메시지에 관련 이슈 번호를 포함하세요.
도구 활용
- 커밋 메시지 템플릿:
.gitmessage
파일을 설정해 팀 표준을 자동 적용.
git config --global commit.template ~/.gitmessage
- 린팅 도구:
commitlint
를 사용해 커밋 메시지 규칙을 강제.
- IDE 플러그인: VS Code의 GitLens 또는 Commit Message Editor 활용.