[TIL] 24/05/01 커밋 메시지 템플릿 설정하기 (편하게 커밋하자~!)

커밋 컨벤션(commit convention)이란?

프로젝트 참여자들이 일관적인 커밋 메시지를 작성하기 위한 규칙, 가이드라인을 의미한다

관습적으로 통용되는 가이드라인 외에도 팀에 맞게 수정하며 적용하다

 

결론적으로 아래와 같은 목적으로 사용한다

1. 가독성 향상으로 작업 내용 파악하기 쉬움 (커뮤니케이션 효율 증대)
2. 변경 이력 추적 용이

 

 

Conventional Commits

A specification for adding human and machine readable meaning to commit messages

www.conventionalcommits.org

위 사이트에서는 커밋 메세지를 구성하는 방법을 아래와 같이 요약하고 있다

<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 단어만 적어도 되지만, 깃모지를 사용해보았다

 

참고로 깃모지는 커밋 메시지에서 이모티콘 사용을 표준화한 것으로, 이모티콘만으로 커밋 목적이나 의도를 쉽게 파악할 수 있다

 

gitmoji

:truck: Move or rename resources (e.g.: files, paths, routes).

gitmoji.dev

 

그리고 무엇보다 예뻐보인다 😁

 

특정 프로젝트에 적용하려면 프로젝트 폴더 내에 작성하면되고,

로컬에서 커밋할 때마다 사용하고 싶으면 '~/'을 루트 디렉토리에 파일을 생성해주면 된다

$ 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

 

 

커밋 메시지 자동화 툴 사용

- Commitlint : 커밋 메시지를 검사해 컨벤션 따르는지 확인
[commitlint - Lint commit messages](https://commitlint.js.org/#/)

- Husky : git hook을 설정하여 커밋/푸시 전 자동화 작업(ex 커밋 메시지 검사, 코드 포맷)을 설정할 수 있는 도구
[🐶 husky | 🐶 husky](https://typicode.github.io/husky/#/)