커밋 메시지 규약
「[type]: 공통 주제 - 개별 내용」 형식과, 한 작업을 여러 커밋으로 나눌 때 앞부분을 똑같이 유지하는 규칙.
기본 형식
[<type>]: <공통 주제> - <개별 파일 내용>
| 항목 | 설명 | 예 |
|---|---|---|
type | 변경 유형 | feat fix refactor chore docs test perf |
| 공통 주제 | 그 작업 전체를 가리키는 한 마디 | 스마트게이트 문자전송 |
| 개별 내용 | 이 커밋에서 실제로 한 일 | 목장 전화번호를 DB에서 읽도록 교체 |
핵심 — 한 작업을 쪼갤 때는 앞부분을 글자 하나까지 똑같이
한 작업을 파일별로 나눠 커밋하면 git log 에서 조각들이 흩어져 보입니다. [type]: 공통 주제 - 까지를 글자 하나까지 똑같이 쓰면, 어디서 어디까지가 한 작업인지 한눈에 묶여 보입니다.
[fix]: 스마트게이트 문자전송 - 목장 전화번호를 DB에서 읽도록 교체
[fix]: 스마트게이트 문자전송 - 해소 통지는 텔레그램만 보내도록 변경
[fix]: 스마트게이트 문자전송 - 수신번호 스모크 테스트 추가
- 공통 주제를 커밋마다 조금씩 바꾸면 묶이지 않아 의미가 없습니다. 작업 내내 고정합니다.
- 파일 하나로 끝나는 단발 수정은 뒷부분을 생략해도 됩니다 — 묶을 대상이 없기 때문입니다.
[fix]: 세척설정 온도값 실수 표기
type 종류
| 타입 | 의미 |
|---|---|
feat | 기능 추가 |
fix | 버그 수정 |
refactor | 리팩터링 (동작 변화 없음) |
chore | 빌드·설정·기타 |
docs | 문서 |
test | 테스트 |
perf | 성능 개선 |
본문 — "무엇"보다 "왜"
제목 한 줄로 부족하면 본문에 왜 그렇게 했는지를 적습니다.
- 무엇을 바꿨는지는 diff 를 보면 알 수 있지만, 왜 그렇게 했는지는 코드에 남지 않습니다.
- 사고 대응 커밋이면 날짜·현상·근거(실측값) 를 함께 남깁니다.
- 관련 이슈가 있으면 이슈 번호를 적습니다 ('이슈 기반 개발 흐름' 문서 참조).
[fix]: 세척설정 로봇 거부 알림 - 거부 시 즉시 전역 모달 표시
로봇이 세척설정 저장을 거부해도 화면에 아무 표시가 없어
운영자가 저장된 줄 알고 넘어가던 문제. (#123)
스테이징 — 명시한 경로만
커밋에는 의도한 파일만 넣습니다.
git add path/to/file1 path/to/file2 # O — 경로를 명시
git add -A # X — 의도하지 않은 파일(산출물·임시파일·비밀값)이 섞인다
왜 — 한꺼번에 추가하면 빌드 산출물, 로컬 설정, 비밀값이 든 파일이 함께 올라가는 사고가 납니다.
더 많은 예
[fix]: 세척설정 로봇 거부 알림 - 거부 시 즉시 전역 모달 표시
[fix]: 세척설정 로봇 거부 알림 - 거부 항목 취소선·「로봇 거부」 표시
[fix]: 세척설정 로봇 거부 알림 - 실측 MQTT 시험 스크립트 추가
[feat]: 급이현황 차트 - 착유 패널에 그래프 설정 연동
[refactor]: 밸브 기대값 보정 - SQL yield 컬럼 식별자 정리