본문 바로가기
개발공부/Git

좋은 git commit 메시지를 작성하는 방법

by 안스토리 2024. 12. 27.

Git commit 메시지의 좋은 예시들

git add .
git commit -m "feat: Implement user authentication system

- Add user registration functionality
- Add login/logout system
- Implement session management
- Add CSRF protection
- Create user and subscription tables
- Configure secure password hashing
- Add email validation
- Implement redirect handling after login/logout"

 

이 commit 메시지의 구조를 설명하면:

  • feat: - 새로운 기능 추가를 의미하는 접두어
  • 첫 줄은 변경사항의 간단한 요약
  • 빈 줄
  • 상세 변경사항을 bullet points로 나열

 

다른 접두어 예시들:

  • fix: - 버그 수정
  • docs: - 문서 변경
  • style: - 코드 포맷팅, 세미콜론 누락 등
  • refactor: - 코드 리팩토링
  • test: - 테스트 코드 추가
  • chore: - 빌드 작업 업데이트, 패키지 매니저 설정 등

 

이런 형식을 Conventional Commits라고 하며, 많은 기업들이 이 방식을 사용합니다.

 

이외에도 commit 메시지를 작성하는 팁을 정리해봅니다.

 

1. 커밋 메시지 구조

<type>: <subject>

<body>

<footer>

 

2. Type 종류

feat     : 새로운 기능 추가
fix      : 버그 수정
docs     : 문서 수정
style    : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
refactor : 코드 리팩토링
test     : 테스트 코드, 리팩토링 테스트 코드 추가
chore    : 빌드 업무 수정, 패키지 매니저 수정
design   : CSS 등 사용자 UI 디자인 변경
comment  : 필요한 주석 추가 및 변경
rename   : 파일 혹은 폴더명을 수정하거나 옮기는 작업
remove   : 파일을 삭제하는 작업
!BREAKING CHANGE : 커다란 API 변경
!HOTFIX  : 급하게 치명적인 버그를 고쳐야 하는 경우

 

3. 좋은 커밋 메시지의 7가지 규칙

  1) 제목과 본문을 빈 행으로 구분

  2) 제목은 50자 이내

  3) 제목 첫 글자는 대문자

  4) 제목 끝에 마침표 없음

  5) 제목은 명령문으로 (동사원형으로 시작)

  6) 본문은 72자마다 줄바꿈

  7) 본문은 "어떻게"가 아닌 "무엇을", "왜"를 설명

 

4. 실제 예시들:

# 기능 추가
feat: Add password strength validation
- Implement minimum length check
- Add special character requirement
- Add number requirement

# 버그 수정
fix: Resolve login redirect issue
- Fix incorrect path after successful login
- Add proper error handling for failed attempts

# 리팩토링
refactor: Improve authentication logic
- Extract validation methods to separate class
- Implement proper dependency injection
- Remove duplicate code in login process

# 문서 수정
docs: Update README with setup instructions
- Add database configuration steps
- Include troubleshooting guide
- Update API documentation

# 긴급 수정
!HOTFIX: Fix security vulnerability in login
- Patch SQL injection vulnerability
- Add input sanitization
- Update error logging

 

5. 커밋 크기에 대한 팁

- 하나의 커밋은 하나의 논리적 변경을 포함

- 너무 크거나 작지 않게 적절한 크기로 분할

- 테스트가 포함된 완전한 변경사항만 커밋

 

6. 자주 사용되는 동사:

Add      : 새로운 기능이나 파일 추가
Remove   : 파일 삭제
Fix      : 버그 수정
Update   : 기존 기능 수정/보완
Implement: 기능 구현
Refactor : 코드 리팩토링
Optimize : 성능 개선
Set up   : 초기 설정
Initialize: 초기화 작업