Dev/VCS

Conventional Commits

dragonhyeon 2024. 12. 10. 23:23
728x90
반응형

Conventional Commits

Conventional Commits 는 버전 관리 시스템 (Version Control System, VCS) 의 커밋 메시지를 일관성 있게 작성하기 위한 규약입니다. 이를통해 팀 내에서 일관성 있는 커밋 메시지 작성이 가능해지고 가독성이 향상되며 릴리즈 관리, 버전 관리 등의 프로세스를 자동화할 수 있습니다.

Conventional Commits 메시지 구조

<type>(<scope>): <description> ← 이 전체가 header

[optional body]

[optional footer]

# header 만 있든, body 까지 있든, footer 까지 있든, 마지막 줄에는 공백 없이 끝내는 것이 일반적
  • <type>: 커밋이 수행한 작업의 종류를 나타냅니다. 주요 타입은 다음과 같습니다.
    • feat: 새로운 기능 추가
    • fix: 버그 수정
    • docs: 문서 변경
    • style: 코드 스타일 변경 (코드 포맷팅, 세미콜론 추가 등)
    • refactor: 코드 리팩토링 (기능 변경 없음)
    • perf: 성능 개선
    • test: 테스트 코드 추가 또는 수정
    • chore: 기타 변경 (빌드, 설정 파일 등)
  • <scope> (선택 사항): 변경 사항이 영향을 미친 범위나 모듈을 나타냅니다. 예를 들어, ui, api, auth 등이 될 수 있습니다.
  • <description>: 커밋의 주요 변경 사항을 보통 50자 이내로 간결하고 명확하게 설명합니다.
  • [optional body] (선택 사항): 커밋에 대해 추가적인 설명이 필요할 경우 작성합니다.
  • [optional footer] (선택 사항): 커밋에 관련된 이슈 트래킹이나 참조 혹은 Breaking Changes 등을 추가할 수 있습니다.
    • 이슈 트래킹 (Issue Tracking): 이슈 트래킹을 위해 푸터에 해당 이슈 번호를 추가할 수 있습니다. 여러가지 키워드가 있으며 대표적으로 Fixes, Closes, Resolves 키워드가 존재합니다.
      • 기본 문법:  <키워드>: <이슈 번호>
        • Fixes: #<issue-number>: 특정 이슈를 수정하거나 해결했음을 나타냄 (버그 수정의 뉘앙스)
        • Closes: #<issue-number>: 특정 이슈를 닫음을 나타냄
        • Resolves: #<issue-number>: 특정 이슈를 해결했음을 나타냄 (기능 완성의 뉘앙스)
    • Reference: 참조를 위한 이슈 번호나 외부 링크 혹은 문서를 추가할 수 있습니다. 공식적인 키워드 혹은 정해진 문법은 없으나 See, See also 와 같은 구문을 자주 사용합니다.
    • Breaking Changes: 커밋이 호환성에 영향을 주는 변경 (Breaking Change) 을 포함할 때, 이를 푸터에 명시할 수 있습니다.
      • 기본 문법: BREAKING CHANGE: <description>

Conventional Commits 메시지 작성 규칙 및 예시

엄격히 강제된 규칙은 없으나 일반적으로 아래와 같은 경향이 있습니다.

  • type:
    • 소문자로 작성
  • scope:
    • 소문자로 작성
  • description:
    • 소문자로 시작하며 한 줄로 간결하게 작성
    • 제목처럼 간결한 요약이므로 불필요한 마침표는 생략
  • body:
    • 대문자로 시작하며 문장 형식으로 작성
    • 여러 문장이 나올 경우 다음 줄에 작성
  • footer:
    • 대문자로 시작하며 종류별로 나열
    • 줄을 비우지 않고 연달아 작성
    • 보통 이슈 트래킹 관련, 참조 관련, Breaking Changes 순으로 작성
    • Breaking Changes 는 여러 문장일 경우 내용이 길어지면 줄바꿈을 권장하며 길지 않다면 줄을 바꾸지 않아도 무방
fix(api): resolve data formatting issue in user endpoint

- The user endpoint was returning incorrectly formatted data
- This change fixes the issue by updating the response serializer
- Additional tests have been added to ensure proper functionality

Fixes #101
Fixes #102
See: https://example.com/docs/api-updates
See #103
BREAKING CHANGE: Removed support for legacy API endpoints. Use the new /v2 endpoints instead.

시제 관련

Conventional Commits 에서 선호되는 시제는 명령형 (imperative) 입니다. 즉, 커밋 메시지를 “이 변경이 무엇을 한다” 로 해석되도록 작성하는 것이 핵심입니다. 다만, 이는 header 부분에 해당하는 내용이며 그 외 body 나 footer 에서는 다른 시제를 사용해도 무방합니다. Conventional Commits 를 따르는 다음과 같은 경우의 시제 사용 권장은 다음과 같습니다.

항목 Conventional Commits 관련 요소 시제 권장
PR 요청 제목 header 명령형 권장
PR 수락 시 Commit message header 명령형 권장
PR 수락 시 Extended description body 명령형일 필요 없음
PR 요청 본문 관련 없음 관련 없음
728x90
반응형

'Dev > VCS' 카테고리의 다른 글

Git 협업 방법 clone, fork  (2) 2024.12.17
Git 원격 브랜치, 원격 추적 브랜치, 트래킹 브랜치  (4) 2024.12.17
Git 스테이징 영역  (2) 2024.12.13
git pull vs git fetch  (2) 2024.12.13
Git 브랜치 전략  (4) 2024.12.12