Commit Style Guide(Commit Convention)
Commit Style Guide(또는 Commit Convention)는 커밋 메시지를 일관되게 작성하는 규칙입니다. 이는 코드베이스의 변경 사항을 더 쉽게 이해하고, 추적하며, 관리할 수 있게 해줍니다. 대표적인 커밋 스타일 가이드로는 AngularJS 팀이 만든 Conventional Commits가 있습니다.
커밋 메시지 구조
Conventional Commits 스타일 가이드는 커밋 메시지를 다음과 같은 구조로 작성합니다:
<타입>[적용 범위(선택 사항)]: <설명>
[본문(선택 사항)]
[꼬리말(선택 사항)]
타입(Type)
- feat: 새로운 기능 추가
- fix: 버그 수정
- docs: 문서 수정
- style: 코드 스타일 변경 (포매팅, 세미콜론 추가 등)
- refactor: 코드 리팩토링 (기능 변화 없음)
- perf: 성능 개선
- test: 테스트 추가 또는 수정
- chore: 빌드 업무 수정, 패키지 매니저 설정 등
- ci: CI 설정 수정
- build: 빌드 관련 수정
- revert: 이전 커밋 되돌리기
예시 커밋 메시지
- feat: 새로운 기능 추가
git commit -m "feat: 사용자 로그인 기능 추가"
- fix: 버그 수정
git commit -m "fix: 로그인 시 비밀번호 검증 오류 수정"
- docs: 문서 수정
git commit -m "docs: README 파일 업데이트"
- style: 코드 스타일 변경
git commit -m "style: 코드 포매팅 및 주석 정리"
- refactor: 코드 리팩토링
git commit -m "refactor: 로그인 로직 리팩토링"
- perf: 성능 개선
git commit -m "perf: 쿼리 최적화로 성능 개선"
- test: 테스트 추가
git commit -m "test: 유닛 테스트 추가"
- chore: 빌드 업무 수정
git commit -m "chore: 패키지 업데이트"
- ci: CI 설정 수정
git commit -m "ci: GitHub Actions 설정 수정"
- build: 빌드 관련 수정
git commit -m "build: Webpack 설정 업데이트"
- revert: 이전 커밋 되돌리기
git commit -m "revert: 로그인 기능 추가 커밋 되돌리기"
Commit Style Guide 사용의 장점
1. 일관성 유지
- 명확한 변경 내역: 모든 팀원이 동일한 규칙을 따르기 때문에 커밋 로그가 일관성 있게 유지됩니다. 이는 변경 사항을 더 쉽게 이해하고 추적할 수 있게 해줍니다.
- 자동화 도구와의 호환성: 일관된 커밋 메시지는 CI/CD 파이프라인, 릴리스 자동화 도구 등과 잘 연동됩니다. 예를 들어, 특정 타입의 커밋만을 모아서 자동으로 릴리스 노트를 생성할 수 있습니다.
2. 코드 리뷰 효율성 증가
- 명확한 커밋 내용: 커밋 메시지의 타입과 주제만으로도 어떤 변경이 이루어졌는지 쉽게 파악할 수 있습니다. 이는 코드 리뷰를 빠르고 효과적으로 수행하는 데 도움이 됩니다.
- 세부 정보 제공: 본문에 자세한 설명을 추가함으로써 변경의 이유와 맥락을 명확히 전달할 수 있습니다.
3. 협업 효율성 향상
- 명확한 커뮤니케이션: 커밋 메시지를 통해 팀원 간의 커뮤니케이션이 명확해집니다. 각 커밋이 어떤 작업을 포함하는지 알기 쉽게 되므로, 협업이 원활해집니다.
- 버그 추적 용이: 일관된 커밋 메시지는 버그를 추적하고 해결하는 데 도움을 줍니다. 특정 문제와 관련된 커밋을 쉽게 찾아볼 수 있습니다.
4. 프로젝트 관리 용이
- 변경 이력 관리: 일관된 커밋 메시지는 프로젝트의 변경 이력을 체계적으로 관리하는 데 유용합니다. 이는 프로젝트의 상태를 파악하고 향후 계획을 세우는 데 도움을 줍니다.
- 릴리스 노트 작성 용이: 타입별로 커밋을 구분함으로써, 새로운 기능, 버그 수정, 문서 변경 등을 쉽게 분류하여 릴리스 노트를 작성할 수 있습니다.
결론
Commit Style Guide를 준수하면 팀원 간의 협업이 원활해지고, 프로젝트 관리가 용이해집니다. 일관된 커밋 메시지를 통해 변경 사항을 명확히 하고, 효율적인 코드 리뷰와 버그 추적을 가능하게 합니다. 이를 통해 프로젝트의 품질과 개발 속도를 모두 높일 수 있습니다.
제가 사용하는 한 줄 Commit Convention
Commit Type: 커밋의 타입 구성
태그: 제목
:(space)제목 으로 :뒤에만 space를 넣는다.
ex) Feat: 결제하기 기능 버튼 추가
Tag Name | Description |
Feat | 새로운 기능을 추가 |
Fix | 버그 수정 |
Design | CSS 등 사용자 UI 디자인 변경 |
!HOTFIX | 급하게 치명적인 버그를 고쳐야하는 경우 |
Style | 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 |
Refactor | 프로덕션 코드 리팩토링 |
Comment | 필요한 주석 추가 및 변경 |
Docs | 문서 수정 |
Test | 테스트 코드, 리펙토링 테스트 코드 추가, Production Code(실제로 사용하는 코드) 변경 없음 |
Chore | 빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음 |
Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 |
Remove | 파일을 삭제하는 작업만 수행한 경우 |
- 추가적인 문맥 정보를 제공하기 위한 목적으로 괄호 안에 적을 수도 있다.
ex) Fix: 결제하기 기능 수정(UIAction 사용)
반응형
'TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2024. 07. 04 (0) | 2024.07.04 |
---|---|
[TIL] 2024. 07. 03 (0) | 2024.07.03 |
[TIL] 2024. 07. 01 (0) | 2024.07.01 |
[TIL] 2024. 06. 28 (0) | 2024.06.28 |
[TIL] 2024. 06. 27 (0) | 2024.06.27 |