////
Search

Commit Message 작성법

현재 상황
뭐가 문제일까요?
여러분들은 깃을 add, commit, pull, push 정도의 명령어만 사용하지만, 정말 다양한 깃 명령어들이 존재합니다(진짜 정말 많음). 보통 리더 역할을 맡는 사람이 log를 확인하며 되돌리고 확인하는 상황들이 종종 발생하는데, 이 시점에서 커밋 메세지가 “pr”, “test”, “111” 이런 식으로 작성되어 있으면 진짜 행복합니다. 일일이 소스코드 내용을 까봐야하거든요. 그게 다 시간이고 비용인거죠.

커밋 메시지 작성 방법

1. 커밋 메시지의 일반적인 구조

헤더(Header), 본문(Body), 꼬리말(Footer)의 세 부분으로 구성됩니다.
<Type>(<Scope>): <Subject> // 헤더 <BLANK LINE> // 제목과 본문은 한 줄 띄움 <Body> // 본문 (선택 사항) <BLANK LINE> // 본문과 꼬리말은 한 줄 띄움 <Footer> // 꼬리말 (선택 사항)
Markdown
복사
네트워크 통신 내용이랑 비슷하죠?

1) 헤더(Header) - 필수

커밋의 종류와 간단한 요약을 나타내며, 가장 중요합니다.
Type(타입) : 커밋의 성격을 나타냅니다
feat, fix, docs 등등
Scope(범위) : 변경 사항이 영향을 미치는 범위와 모듈을 나타냅니다(선택 사항)
Subject(제목) : 변경 사항을 요약한 짧고 명확한 설명

2) 본문(Body) - 선택

변경 내용에 대한 상세 설명이 필요할 때 작성합니다. 무엇을 변경했고 왜 변경했는지에 초점을 맞춥니다. 어떻게 변경했는지는 코드(git diff)로 알 수 있으므로 굳이 설명할 필요는 없습니다

3) 꼬리말(Footer) - 선택

관련 이슈 트래커 정보, 해결된 이슈 정보 등의 메타데이터를 포함합니다 (예 : Closes : #123, Refs : #456)

2. 좋은 커밋 메시지를 위한 규칙 7가지

1.
제목과 본문을 빈 행으로 분리
Git 도구가 커밋을 해석하는 데 필수적
2.
제목은 (영문 기준) 50자 이내로 제한
간결하고 명확하게 요약하도록 강제 → 로그 가독성 높이기
3.
제목은 명령문(현재 시제)로 작성
Fix : Resolve unexpected error → O
Fixed unexpected error → X
4.
제목의 첫 글자는 대문자로 시작
일반적 관습
5.
제목 끝에 마침표(.) 사용 금지
6.
본문의 각 행은 (영문 기준) 72자 이내로 줄바꿈 처리
가독성 높이기 위함
7.
본문에는 “무엇”과 “왜”를 설명하고 “어떻게”는 피하기
어떻게는 git diff 명령어를 사용하면 확인 가능

3. 커밋 타입(Type) 활용

타입(Type)
설명(Description)
예시(Example)
feat
새로운 기능 추가
feat: Add user authentication feature
fix
버그 수정
fix(navbar): Resolve layout shift issue on mobile
docs
문서 (README, 주석 등) 수정/추가
docs: Update installation guide in README
style
코드 포맷팅, 세미콜론, 공백 등 스타일 변경 (로직 변경 없음)
style: Apply auto-formatting to all files
refactor
버그 수정이나 기능 추가 없이 코드 리팩토링
refactor(api): Simplify response handling logic
perf
성능 개선 (Performance)
perf: Optimize database query for faster response
test
테스트 코드 추가/수정
test: Add unit tests for filter function
chore
빌드 시스템, 라이브러리 설치 등 보조 도구/라이브러리 변경 (운영 관련)
chore(deps): Update axios to version 1.6.4
build
빌드 시스템, 외부 종속성 (예: npm, maven, docker) 관련 변경
build: Update webpack configuration
ci
CI(Continuous Integration) 설정 파일 변경
ci: Add deployment stage to GitHub Actions
revert
이전 커밋 되돌리기
revert: Revert feat: Add user profile page

4. 예시

task/1 : vm_get_frame 함수 구현 [task/1] vm_get_frame 함수 구현 fix/186 : vm_get_frame 버그 수정 [fix/186] vm_get_frame 버그 수정 test : 팀 생성 이후 첫 커밋 테스트(PR 생성 용) [test] 팀 생성 이후 첫 커밋 테스트(PR 생성 용)
Markdown
복사
본문과 꼬리말은 선택 사항입니다. 헤더만 잘 작성해도 됩니다.
[task/1] vm_get_frame 함수 구현 vm_get_frame 함수는 이런 저런 역할을 합니다... close #1
Markdown
복사
자신이 수행한 커밋과 연관된 이슈를 병합되자마자 닫고자 한다면, 커밋 메세지 내용에 close #번호 로 작성해주면 됩니다.