오늘 실시간 강의를 들으면서 Conventional Commits에 대해서 알게 되었다. 평소 git을 다른 팀원간의 협업보다 개인 레포지토리에 push를 하는 나로서는 commit의 메시지를 크게 신경쓰지 않았지만 이 Conventional Commits을 알고나서 앞으로는 커밋을 할 때 좀 더 신경을 써야겠다.
이 글은 Conventional Commits 와 NKLCB-git을 참고해 필요한 부분을 정리하여 작성된 글입니다.
Conventional Commits 스펙은 커밋 메시지에 곁들여진 가벼운 컨벤션으로 명확한 커밋 히스토리를 생성하기 위한 간단한 규칙을 제공한다. 이렇게 만들어진 커밋 히스토리를 이용하여 더 쉽게 자동화된 도구를 만들 수 있다. 그 결과 이 컨벤션은 커밋 메시지에 신규 기능 추가, 문제 수정, 커다란 변화가 있음을 기술함으로써 유의적 버전(Sementic Versioning) 과 일맥상통한 면이 있다.
이 Conventional Commits에서 말하는 커밋 메시지의 구조는 다음과 같아야 한다고 주장한다.
<타입>[적용 범위(선택 사항)]: <설명>
[본문(선택 사항)]
[꼬리말(선택 사항)]
의도를 전달하기 위해 다음과 같은 구조적 요소가 포함되어 있다.
1. fix: 코드베이스에서 버그를 패치하는 fix
타입의 커밋
2. feat: 코드베이스에서 새 기능이 추가 되는 feat
타입의 커밋
3. BREAKING CHANGE: 본문이나 꼬리말의 시작 부분에 BREAKING CHANGE:
이라는 문자열을 가진 커밋은 커다란 API 변경이 있다는 것을 의미 함
4. 다른타입: fix:
와 feat:
이외의 타입을 말하고 아래는 앵귤러 컨벤션을 기반으로 하는 타입들
feat: features (기능 개발 관련)
docs: documentations (문서화 작업)
conf: configurations (환경설정 관련)
test: test (test 관련)
fix: bug-fix (오류 개선 혹은 버그 패치)
refactor: refactoring
ci: Continuous Integration
build: Build (빌드 관련)
perf: Performance
새로운 기능이나 버그 수정 없이 현재 구현체를 개선하는 커밋에 대해서는 improvement
사용을 권장
chore!: drop Node 6 from testing matrix
BREAKING CHANGE: dropping Node 6 which hits end of life in April
docs: correct spelling of CHANGELOG
feat(lang): add polish language
fix: correct minor typos in code
see the issue for details on the typos fixed
closes issue #12
feat: Create server.py to start flask project
docs: Create README.md
conf: poetry init
test: User model CRUD test complete
오픈소스에 기여하거나 앞으로 기여할 예정인 사람들은 Conventional Commits을 알아두면 좋을 것 같다.