commit message 스타일을 정해두면 git을 이용한 협업을 수행할 때 상호간의 코드리뷰 및 이전 커밋로그 확인에 용이하다.
git commit message convention에 대해 알아보자.
type: Subject (제목)
# 한줄 띄우기
body (본문)
# 한줄 띄우기
footer (꼬리말)
어떤 것을 했는지 명확한 단어가 들어가야 하고, 너무 길게 작성하지 않는다.
Git이 사용하는 메시지 형식에 맞춰 일관성을 주기 위해 위와 같은 규칙을 정해놓는다.
예를들어 GitHub에서 README.md 파일을 만든다고 했을 때Create README.md
와 같이 명명하는 것을 확인할 수 있다.
type은 다음을 참고하면 좋다.
Tag Name | Description |
---|---|
Feat | 새로운 기능을 추가 |
Fix | 버그 수정 |
Design | CSS 등 사용자 UI 디자인 변경 |
Style | 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 |
Refactor | 프로덕션 코드 리팩토링 |
Comment | 필요한 주석 추가 및 변경 |
Docs | 문서 수정 |
Test | 테스트 코드, 리펙토링 테스트 코드 추가, Production Code(실제로 사용하는 코드) 변경 없음 |
Chore | 빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음 |
Rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 |
Remove | 파일을 삭제하는 작업만 수행한 경우 |
해당 내용은 선택사항이다.
보다 자세한 커밋 메세지를 작성하고자 할 때, 제목에 이어서 부가적인 설명을 붙인다.
이 커밋을 한 이유와 변경 내용 등을 작성한다.
해당 내용도 마찬가지로 선택사항이다.
주로 이슈 번호를 참조시킬 때 사용한다.
위 내용에 익숙해지기 어려울수도, 조직별로 명명규약이 달라 헷갈릴 수도 있다.
그럴 때 마다 규칙을 확인하는 것도 좋겠지만 commit message 템플릿을 별도로 지정해서 commit 시 가이드를 띄워주는 방법도 존재한다.
# type: Subject 형식으로 작성하며 제목은 최대 50글자 정도로만 입력
# 제목을 아랫줄에 작성, 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성
# 본문(추가 설명) 작성
# 꼬릿말(footer) 작성
################
# Feat : 새로운 기능 추가
# Fix : 버그 수정
# Docs : 문서 수정
# Test : 테스트 코드 추가
# Refactor : 코드 리팩토링
# Style : 코드 의미에 영향을 주지 않는 변경사항
# Chore : 빌드 부분 혹은 패키지 매니저 수정사항
################
아래 명령어를 수행한다.
git config --global commit.template /c/project/moyeo_web/.gitcommit_message_template.txt
모든 프로젝트에 적용하기 위해 --global옵션을 붙였다.
이후 git commit
을 수행할 때 다음과 같이 주석으로 안내 문구가 뜬다.
해당 주석에 맞게 내용을 작성한 뒤 :wq로 내용을 저장(커밋) 하면
아래와 같이 제목, 본문, 꼬리말이 적용된것을 볼 수 있다.
git fork를 사용할 경우
vim 환경이 아니기 때문에 위처럼 #이 주석처리되지않고 텍스트로 출력된다.
https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines
https://www.conventionalcommits.org/ko/v1.0.0/