GIT

[GIT] commit msg template 적용

공백._. 2024. 9. 11. 15:50

회사에서 프로젝트를 시작하고, 토이 프로젝트를 진행하면서 GIT에 올리는 커밋 메시지 형태를 통일하기로 결정했다. 템플릿은 구글에 쳤을 때, 기본으로 나오는 내용을 받아서 적용했다. 다음 템플릿을 .git 프로젝트 안에 .gitmessage.txt라는 이름으로 저장한다.

1) .git/.gitmessage.txt 파일 생성

################
# <타입>: <제목> 의 형식으로 제목을 아래 공백줄에 작성
# 제목은 50자 이내 / 변경사항이 "무엇"인지 명확히 작성
# 예) feat: 로그인 기능 추가

# 바로 아래 공백은 지우지 마세요 (제목과 본문의 분리를 위함)

################
# 본문(구체적인 내용)을 아랫줄에 작성


################
# 꼬릿말(footer)을 아랫줄에 작성 (현재 커밋과 관련된 이슈 번호 추가 등)


################
# --- COMMIT END ---
#   <타입> 리스트
#   feat        : 기능 (새로운 기능)
#   fix         : 버그 (버그 수정)
#   refactor    : 리팩토링
#   design      : CSS 등 사용자 UI 디자인 변경
#   comment     : 필요한 주석 추가 및 변경
#   style       : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
#   docs        : 문서 수정 (문서 추가, 수정, 삭제, README)
#   test        : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
#   chore       : 기타 변경사항 (빌드 스크립트 수정, assets, 패키지 매니저 등)
#   init        : 초기 생성
#   rename      : 파일 혹은 폴더명을 수정하거나 옮기는 작업만 한 경우
#   remove      : 파일을 삭제하는 작업만 수행한 경우
# ------------------
#   제목 첫 글자를 대문자로
#   제목은 명령문으로
#   제목 끝에 마침표(.) 금지
#   제목과 본문을 한 줄 띄워 분리하기
#   본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
#   본문에 여러줄의 메시지를 작성할 땐 "-"로 구분
# ------------------
#   <꼬리말>
#   필수가 아닌 optional
#   Fixes        :이슈 수정중 (아직 해결되지 않은 경우)
#   Resolves     : 이슈 해결했을 때 사용
#   Ref          : 참고할 이슈가 있을 때 사용
#   Related to   : 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)
#   ex) Fixes: #47 Related to: #32, #21

2) 템플릿으로 적용

다음 명령어를 터미널에 입력하여 git config에 템플릿을 적용한다.

git config --global commit.template .git/.gitmessage.txt

이 명령어를 입력한 후, commit을 하려고 하면 자동으로 커밋 메시지 템플릿이 보여진다. 템플릿을 따라 커밋 메시지를 작성하면 끝~

3) IntelliJ에 적용

나는 인텔리제이에 깃 연동을 해둬서 IDE에서 바로 커밋, 풀 등의 작업을 진행하고 있다. 인텔리제이에서도 커밋 메시지 템플릿이 동작하도록 설정해주었다. 

(1) Plugin에서 commit Message Template 설치

File>Settings>Plugins에서 commit message template을 찾아서 install 해준다. Install이 정상적으로 끝나면 왼쪽 네비게이션 바에 Tools아래에 commit message template이라는 탭이 생긴다.


(2) 설정한 commit message template적용

File>Settings>Tools>Commit Message Template> Load Template File에서 1)에서 작성했던 파일을 선택해주면 진짜 끝~