커밋 컨벤션(commit convention)
프로젝트 참여자들이 일관적인 커밋 메시지를 작성하기 위한 규칙, 가이드라인을 의미한다.
1. 가독성 향상으로 작업 내용 파악하기 쉬움 (커뮤니케이션 효율 증대)
2. 변경 이력 추적 용이
위 사이트에서는 커밋 메세지를 구성하는 방법을 아래와 같이 요약하고 있다
<type>: <description>
[optional body]
[optional footer]
1. <type>
변경 사항 유형으로, 해당 내용만 봐도 어떤 커밋의 내용인지 확인하기 위해 명확하게 작성해야한다.
feat | 새로운 기능 추가 |
fix | 버그 수정 |
docs | 문서 수정 |
style | 코드 포맷 변경, 스타일 수정 |
refactor | 리팩토링 |
test | 테스트 코드/수정 |
rename | 파일/폴더명 수정 |
remove | 코드/파일 삭제 |
comment | 주석 추가/변경 |
chore | 빌드 수정, 패키지 매니저 수정 |
2. <description>
변경 작업 내용을 간단하게 서술한다.
- 영문 - 대문자 시작, 과거형X (Modify, Delete, Improve..) >> 영문을 권장하지만, 나는 한글이 더 편한 것 같다.
- 마침표 사용X
3. [body]
커밋에 대한 추가 설명 (무엇을 왜/어떻게 변경?)
따로 설정하지 않고, git commit -m 으로도 가능하다.
괄호를 닫지 않고 엔터 후 description을 작성하고 따옴표를 닫으면 된다.
git commit -m "커밋 제목
부가 설명..."
4. [footer]
이슈 번호, 참조 링크 → Closes 작업번호/이슈번호
feat: 새로운 페이지 추가
- 사용자 프로필 페이지 및 라우팅 추가
- 프로필 정보를 보여주는 프로필 카드 컴포넌트 구현
- 프로필 수정 기능 구현
Closes #123
커밋 메시지 자동화 방법
매번 일일이 커밋 컨벤션을 확인하는 건 비효율적이고, 무엇보다 귀찮은 일이다.
이때 commit message template를 설정하면, 실수하지 않고 쉽게 컨벤션을 지킬 수 있다 !!
(이번에 하면서 global로 적용해두었다 ㅎㅎ 👍)
commit message template 적용방법
1. .gitmessage.txt 파일 생성
2. git config로 template 설정
1 ) .gitmessage.txt 파일 생성
touch 명령어나 vim, 일반적인 파일 생성 등 파일만 생성하면 가능하다.
################
# <타입> : <제목> 의 형식으로 제목을 아래 공백줄에 작성
# 제목은 50자 이내 / (영어)대문자로 시작 / 변경사항이 "무엇"인지 명확히 작성 / 끝에 마침표 금지
# 예) feat : 로그인 기능 추가
# 바로 아래 공백은 지우지 마세요 (제목과 본문의 분리 위해)
################
# 본문(구체적인 내용)을 아랫줄에 작성
# 여러 줄의 메시지를 작성할 땐 "-"로 구분 (한 줄은 72자 이내)
################
# 꼬릿말(footer)을 아랫줄에 작성 (현재 커밋과 관련된 이슈 번호 추가 등)
# 예) Close #7
################
# ✨ update : 해당 파일에 새로운 기능이 생김
# 🎉 add : 없던 파일을 생성함, 초기 세팅
# 🐛 bugfix : 버그 수정
# ♻️ refactor : 코드 리팩토링
# 🩹 fix : 코드 수정
# 🚚 move : 파일 옮김/정리
# 🔥 del : 기능/파일을 삭제
# 🍻 test : 테스트 코드를 작성
# 💄 style : css
# 🙈 gitfix : gitignore 수정
# 💡 comment : 주석 변경
# 🔨 script : package.json 변경(npm 설치 등)
################
일반적으로 많이 공유되는 커밋 메시지 텍스트 파일을 내입맛대로 조금 수정했다.
type 단어만 적어도 되지만, 깃모지도 추가했다.
참고로 깃모지는 커밋 메시지에서 이모티콘 사용을 표준화한 것으로, 이모티콘만으로 커밋 목적이나 의도를 쉽게 파악할 수 있다.
그리고 무엇보다 예쁨 😁
특정 프로젝트에만 적용 or 로컬에서 글로벌로 설정
특정 프로젝트에 적용하려면 프로젝트 폴더 내에 작성하면되고,
로컬에서 커밋할 때마다 사용하고 싶으면 '~/'을 루트 디렉토리에 파일을 생성해주면 된다.
$ touch ~/.gitmessage.txt // 파일 생성
vim .gitmessage.txt // 파일 수정
* 터미널 추가적인 작업으로는 아래 과정을 하면 된다
1. Vim으로 들어가면 i를 눌러 insert 모드로 변경
2. 위의 커밋 컨벤션을 작성한다
3. esc로 종료
4. :wq 로 vim종료
2 ) git config로 커밋 메시지 template 설정
global
git config --global commit.template ~/.gitmessage.txt
현재 프로젝트만 적용
git config commit.template .gitmessage.txt
3) template 설정 해제 방법
설정한 템플릿을 바꾸거나, 변경하고 싶을 때는 gitmessage.txt파일을 수정하면 된다.
global
git config --unset --global commit.template
현재 프로젝트에서 제거
git config --unset commit.template
커밋 메시지 자동화 툴 사용
1. Commitlint : 커밋 메시지를 검사해 컨벤션 따르는지 확인
[commitlint - Lint commit messages](https://commitlint.js.org/#/)
2. Husky : git hook을 설정하여 커밋/푸시 전 자동화 작업(ex 커밋 메시지 검사, 코드 포맷)을 설정할 수 있는 도구
[🐶 husky | 🐶 husky](https://typicode.github.io/husky/#/)