Skip to content

Commit Message Guidelines

emayom edited this page Apr 12, 2024 · 4 revisions

개요

샐핀오프(salpinoff) 개발팀에서 사용하는 커밋 컨벤션입니다. 규칙은 husky와 함께 lint-staged를 사용하여 확인됩니다.

커밋 메시지 형식

<header>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
  • 커밋 메시지의 어떤 행도 100자를 초과할 수 없습니다. 이는 GitHub 및 다른 Git 도구들에서 원활히 읽힐 수 있도록 하기 위함입니다.
  • 커밋 메시지는 단일의 머리말(header), 본문(body) 그리고 꼬리말(footer)으로 구성되며 빈 줄로 구분됩니다.
  • header는 필수 항목이며 Commit Message Header 형식을 준수해야 합니다.
  • body는 필수 항목이며 Commit Message Body 형식을 준수해야 합니다.
  • footer는 선택 항목이며 Commit Message Footer 형식은 ~ 구조에 대해 설명합니다.

Commit Message Header

<type>(<scope>): <short summary>
  │       │             │
  │       │             └─⫸ Summary in present tense. Not capitalized. No period at the end.
  │       │
  │       └─⫸ Commit Scope: e.g. animations|bazel|benchpress|common|compiler|compiler-cli|core|
  │                          elements|forms|http|language-service|localize|platform-browser|
  │                          platform-browser-dynamic|platform-server|router|service-worker|
  │                          upgrade|zone.js|packaging|changelog|docs-infra|migrations|
  │                          devtools
  │
  └─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test
  • <type><summary> 필드는 필수이며, (<scope>) 필드는 선택 사항입니다.
  • 명령형(imperative)과 현재 시제(present tense)를 사용합니다.
  • 첫 글자를 대문자로 작성하지 않습니다.
  • 마지막을 점(.)으로 마치지 않습니다.
Type

반드시 다음 중 하나를 따릅니다:

  • feat: 새로운 기능
  • fix: 버그 픽스
  • docs: 문서만 변경
  • style: 프로덕션 코드의 변경 이외의 작업(formatting, missing semi colons, etc)
  • refactor: 프로덕션 코드 리팩토링 또는 버그를 수정하거나 기능을 추가하지 않는 코드 변경
  • test: 누락된 테스트 추가 또는 기존 테스트 수정
  • perf: 성능 향상을 위한 코드 변경
  • chore: 빌드 프로세스 변경 또는 문서 생성과 같은 보조 도구 및 라이브러리 변경
  • build: 빌드 시스템 또는 외부 종속성(external dependencies)에 영향을 미치는 변경 사항
  • ci: CI 구성 파일 및 스크립트 변경
Emoji guide

빠르고 명확한 소통을 위해 <type>과 상응하는 이모지(emoji)를 추가하여 표시합니다.
해당 작업은 Git Hooks를 통해 처리합니다.

  • feat: ✨ :sparkles:
  • fix: 🐛 :bug:
  • docs: 📝 :memo:
  • style: 🎨 :art:
  • refactor: ♻️ :recycle:
  • test: ✅ :white_check_mark:
  • perf: ⚡ :zap:
  • chore: 📦 :package:
  • build: 💚 :green_heart:
  • ci: 🔧 :wrench:
Scope

<scope>는 영향을 받는 npm package의 이름이어야 합니다.

Commit Message Body

마찬가지로 명령형과 현재 시제를 사용합니다. ("fix" not "fixed" nor "fixes".)

커밋 메시지의 본문에서는 변경 동기를 설명합니다.
변경으로 인한 영향을 설명하기 위해 이전 동작과 새 동작을 비교를 포함할 수 있습니다.

Commit Message Footer

커밋 메시지의 꼬리말에서는 breaking changes나 deprecations에 대한 정보를 포함합니다.
그리고 또한 GitHub issues, Jira tickets 및 기타 해당 commit으로 닫히거나 관련된 PR을 참조할 수 있는 곳입니다.

예시는 다음과 같습니다:

BREAKING CHANGE: <breaking change summary>
<BLANK LINE>
<breaking change description + migration instructions>
<BLANK LINE>
<BLANK LINE>
Fixes #<issue number>

혹은

DEPRECATED: <what is deprecated>
<BLANK LINE>
<deprecation description + recommended update path>
<BLANK LINE>
<BLANK LINE>
Closes #<pr number>

Revert commits

이전 커밋을 되돌리는 커밋의 경우, revert: 로 시작하며, 되돌린 커밋의 헤더로 이어져야 합니다.

커밋 메시지 본문의 내용은 다음을 포함해야 합니다:

  • 다음과 같은 형식의 되돌리는 커밋 식별 SHA 정보: This reverts commit <SHA>
  • 커밋 메시지를 되돌리는 이유에 대한 명확한 설명

이 문서는 AngularJS Git Commit Message Conventions를 기반으로 합니다. 올바른 형식의 커밋 메시지의 예는 커밋 기록을 참조하세요.