좋은 git commit 메시지 작성하기
git에서 commit할 때 작성하는 메시지를 레벨업 시켜보자.
git commit message는 쉘 프롬프트에서 아래와 같이 입력하면 된다.
# commit message editor를 활용하는 방법
$ git commit
# 빠르고 간단한 방법
$ git commit -m "commit message title"
1. 좋은 커밋을 위한 8가지 약속.
- 제목과 본문을 한 줄 띄워 분리하기.
- 제목은 영문 기준 50자 이내로.
- 제목 첫글자를 대문자로.
- 제목 끝에
.
금지. - 제목은 명령조로.
- Github - 제목(이나 본문)에 이슈 번호 붙이기.
- 본문은 영문 기준 72자마다 줄 바꾸기.
- 본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기.
2. 좋은 커밋의 목적
- 더 좋은 커밋 로그 가독성.
- 더 나은 협업과 리뷰 프로세스.
- 더 쉬운 코드 유지보수.
- 커밋 메시지를 작성할 때는 기승전결(제목, 본문, 꼬리말)을 고려하고 나와 타인이 쉽게 이해하고 검색하기 좋도록 간결하고 명확하게 작성.
3. 커밋 메시지 구조
Title 제목
Title은 Type
과 Subject
로 나뉜다.
Type
은 아래 중 하나를 목적에 맞게 쓴다.
init
: 초기화feat
: 새로운 기능 추가update
: 기능 보완 (업그레이드)remove
: 코드나 파일 제거fix
: 버그 수정config
: 설정 관련 파일 작성 또는 변경build
: 빌드 관련 파일 수정ci
: CI관련 설정 수정docs
: 문서 (문서 추가, 수정, 삭제)style
: 스타일 (코드 형식, 세미콜론 추가: 코드 로직에 변경 없는 경우)refactor
: 코드 리팩토링test
: 테스트 (테스트 코드 추가, 수정, 삭제: 코드 로직에 변경 없는 경우)chore
: 기타 변경사항 (스크립트 수정 등)
Subject
는 아래 규칙을 지켜 통일감을 유지한다.
- 제목은 50자 이하
- 제목 첫 글자는 대문자
- 제목은 명령문
- 제목 끝에 마침표(.) 금지
- 제목과 본문을 한 줄 띄워 분리
- 제목이나 본문에 이슈 번호(가 있다면) 붙임
Content 본문
- 쓸지 말지는 선택 사항
- 최소 20자 필수 입력
- 한 줄에 72자 이하
- 어떻게(How)보다 무엇을, 왜(What, Why)에 맞춰 작성
Footer 꼬리말
- 쓸지 말지는 선택 사항
-
Issue tracker ID를 작성할 때 사용
Resolve
: 이슈 해결See also
: 참고할 이슈
github 이슈 자동 종료 팁
Github는 commit 메세지를 작성할 때 예약된 키워드를 사용하면 이슈가 자동으로 종료되는 기능을 탑재하고 있다. 예약어는 commit 메세지 어느 위치에서나 사용 가능합니다.
예시
Resolve #337
사용되는 키워드
close
closes
closed
fix
fixes
fixed
resolve
resolves
resolved
close 계열은 일반 개발 이슈, fix 계열은 버그 수정 이나 hot-fix 이슈, resolve 계열은 문의나 요청 사항에 대응한 이슈에 사용하면 적당하다.
4. Commit message template 만들기
Commit message template을 적용할 git 프로젝트 폴더로 이동한 다음, .gitmessage.txt
파일을 생성한다.
$ touch ~/.gitmessage.txt
$ vi ~/.gitmessage.txt
커스텀 템플릿 파일을 아래와 같이 작성했다.
##### 제목(title) #####
# 50자 이내로
# <Type>: <Title>
# ex) docs: Add new post
# 해당 라인 지우고 제목 작성
##### 본문(content) #####
# 72자마다 줄바꾸기
# 해당 라인 지우고 본문 작성
##### 꼬리말(footer) #####
# 깃허브는 이슈종료 예약어 있음
# <Type> #<Issue number>
# ex) Resolve #122
# 해당 라인 지우고 꼬리말 작성
##### COMMIT END #####
# <Type> 목록
# init: 초기화
# feat: 새로운 기능 추가
# update: 기능 보완 (업그레이드)
# remove: 코드나 파일 제거
# fix: 버그 수정
# config: 설정 관련 파일 작성 또는 변경
# build: 빌드 관련 파일 수정
# ci: CI관련 설정 수정
# docs: 문서 (문서 추가, 수정, 삭제)
# style: 스타일 (코드 형식, 세미콜론 추가: 코드 로직에 변경 없는 경우)
# refactor: 코드 리팩토링
# test: 테스트 (테스트 코드 추가, 수정, 삭제: 코드 로직에 변경 없는 경우)
# chore: 기타 변경사항 (스크립트 수정 등)
#
# 제목 첫 글자는 대문자
# 제목은 명령문
# 제목 끝에 마침표(.) 금지
# 제목과 본문을 한 줄 띄워 분리
# 본문은 "어떻게" 보다 "무엇을"과 "왜"를 설명
# 본문에 여러 줄의 메시지를 작성할 땐 "-" 혹은 "번호"로 구분
##########################
작성을 했으면 git 설정에 템플릿 파일을 추가한다.
# global하게 적용하는 경우
$ git config --global commit.template ~/.gitmessage.txt
# 특정 프로젝트만 적용하는 경우
$ git config commit.template .gitmessage.txt
이렇게 작업하면 앞으로 git commit
으로 입력할 때 자동으로 템플릿이 나타난다.
또한 템플릿의 주석(#)은 실제 커밋시 포함이 되지 않는다.
댓글남기기