좋은 git commit 메시지 작성하기

git에서 commit할 때 작성하는 메시지를 레벨업 시켜보자.

git commit message는 쉘 프롬프트에서 아래와 같이 입력하면 된다.

# commit message editor를 활용하는 방법
$ git commit 

# 빠르고 간단한 방법
$ git commit -m "commit message title" 

1. 좋은 커밋을 위한 8가지 약속.

  1. 제목과 본문을 한 줄 띄워 분리하기.
  2. 제목은 영문 기준 50자 이내로.
  3. 제목 첫글자를 대문자로.
  4. 제목 끝에 . 금지.
  5. 제목은 명령조로.
  6. Github - 제목(이나 본문)에 이슈 번호 붙이기.
  7. 본문은 영문 기준 72자마다 줄 바꾸기.
  8. 본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기.

2. 좋은 커밋의 목적

  • 더 좋은 커밋 로그 가독성.
  • 더 나은 협업과 리뷰 프로세스.
  • 더 쉬운 코드 유지보수.
  • 커밋 메시지를 작성할 때는 기승전결(제목, 본문, 꼬리말)을 고려하고 나와 타인이 쉽게 이해하고 검색하기 좋도록 간결하고 명확하게 작성.

3. 커밋 메시지 구조

Title 제목

Title은 TypeSubject로 나뉜다.

Type은 아래 중 하나를 목적에 맞게 쓴다.

  • init: 초기화
  • feat: 새로운 기능 추가
  • update: 기능 보완 (업그레이드)
  • remove: 코드나 파일 제거
  • fix: 버그 수정
  • config: 설정 관련 파일 작성 또는 변경
  • build: 빌드 관련 파일 수정
  • ci: CI관련 설정 수정
  • docs: 문서 (문서 추가, 수정, 삭제)
  • style: 스타일 (코드 형식, 세미콜론 추가: 코드 로직에 변경 없는 경우)
  • refactor: 코드 리팩토링
  • test: 테스트 (테스트 코드 추가, 수정, 삭제: 코드 로직에 변경 없는 경우)
  • chore: 기타 변경사항 (스크립트 수정 등)

Subject는 아래 규칙을 지켜 통일감을 유지한다.

  • 제목은 50자 이하
  • 제목 첫 글자는 대문자
  • 제목은 명령문
  • 제목 끝에 마침표(.) 금지
  • 제목과 본문을 한 줄 띄워 분리
  • 제목이나 본문에 이슈 번호(가 있다면) 붙임

Content 본문

  • 쓸지 말지는 선택 사항
  • 최소 20자 필수 입력
  • 한 줄에 72자 이하
  • 어떻게(How)보다 무엇을, 왜(What, Why)에 맞춰 작성
  • 쓸지 말지는 선택 사항
  • 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으로 입력할 때 자동으로 템플릿이 나타난다.

또한 템플릿의 주석(#)은 실제 커밋시 포함이 되지 않는다.

참고자료

태그:

카테고리:

마지막 수정일:

댓글남기기