<Git> commit message template 사용

kukjunLEE·2021년 12월 31일
10

Git

목록 보기
1/2
post-thumbnail

1. Commit Message?

Git에서 commit하는 경우, Commit Message에 의해 작성하도록 되어 있습니다.

기본적으로 제공하는 템플릿 형태로 Commit Message 를 쓰도록 설정되나, 이 템블릿을 본인이 원하는 형태로 바꿀 수 있습니다.



2. Commit Message의 기본 구조

기본적인 Commit Message 규칙이 존재합니다.

Commit Message 규칙

  1. 제목과 본문을 빈 행으로 구분한다.
  2. 제목을 50글자 내로 제한
  3. 제목 첫 글자는 대문자로 작성
  4. 제목 끝에 마침표 넣지 않기
  5. 제목은 명령문으로 사용하되, 과거형을 사용하지 않는다.
  6. 본문의 각 행은 72글자 내로 제한
  7. 어떻게 보다는 무엇과 왜를 설명

Commit Message 구조

type : title
body
Resolves
See also
  • type은 양식을 지정합니다.
  • Resolves에는 해결한 이슈를, See also에는 참고 이슈를 작성하고 생략이 가능합니다.

type

커밋 유형 지정

  • FEAT : 새로운 기능 의 추가
  • FIX : 버그 수정
  • DOCS : 문서 수정
  • STYLE : 스타일 관련 기능(코드 포맷팅, 세미콜론 누락, 코드 자체의 변경이 없는 경우)
  • REFACTOR : 코드 리팩토링
  • TEST : 테스트 코드, 리팩토링 테스트 코드 추가
  • CHORE : 빌드 업무 수정, 패키지 매니저 수정



Issue 닫기

Commit message에서도 github의 issue를 닫는 기능을 제공합니다.

키워드 #이슈번호

Github issue 종료 인식 키워드

  • close
  • closes
  • closed
  • fix
  • fixed
  • resolve
  • resolves
  • resolved

각 키워드마다 기능의 차이는 없고, 문법이나 맥락에 맞게 사용하면 됩니다.
다만 close 계열은 일반 개발 이슈, fix 계열은 버그 픽스나 핫 픽스 이슈, resolve 계열은 문의나 요청 사항에 대응한 이슈에 사용하면 적당하다는 관례는 있습니다.

issue close 예시

제목에 이슈 한 개 닫기를 적용

# 제목에 이슈 한 개 닫기 적용한 사례
<feature> : <Close #10 - implement login function>

* 로그인 구현 기능 이슈 해결

내용으로 이슈 여러 개 닫기를 적용

# 내용으로 이슈 여러 개 닫기를 적용한 사례
<fix> : <fix login error issue>

* 로그인 기능을 구현했으나, 관련 fix 이슈가 많이 발생했고, 이를 해결함

# Resolve 작성 부분
* Fix #21 Update Login Algorithm
* Fix #24 Update Login Form




3. Commit Template

Commit Template은 Commit 작성법을 규치으로 정하고, 그 규칙을 Template으로 만들어, 가이드 해서 Commit Log를 작성할 수 있도록 해주는 기능을 합니다.


Commit Template 만들기

  1. 프로젝트 최상위 경로에 git-commit-template.txt 생성
  2. config 파일에 git commit template 설정

프로젝트 최상위 경로에 git-commit-template.txt 생성

git-commit-template은 Commit Message 규칙에 맞게 작성하고 사용자가 보기 쉽도록 작성해야 합니다.

git-commit-template.txt 작성 예시

# <타입> : <제목> 형식으로 작성하며 제목은 최대 50글자 정도로만 입력
# 제목을 아랫줄에 작성, 제목 끝에 마침표 금지, 무엇을 했는지 명확하게 작성

################
# 본문(추가 설명)을 아랫줄에 작성

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

################
# feature : 새로운 기능 추가
# fix : 버그 수정
# docs : 문서 수정
# test : 테스트 코드 추가
# refactor : 코드 리팩토링
# style : 코드 의미에 영향을 주지 않는 변경사항
# chore : 빌드 부분 혹은 패키지 매니저 수정사항
################

################
# Remember me ~
#  제목줄을 대문자로 작성
#  제목줄은 명령어로 작성
#  제목줄은 마침표로 끝내지 않는다.
#  본문과 제목에는 빈줄을 넣어서 구분한다.
#  본문에는 "어떻게" 보다는 "왜"와 "무엇을" 설명한다.
#  본문에 목록을 나타낼때는 "-"로 시작한다.
################

config 파일에 git commit template 설정

작성한 git-commit-template.txt를 commit 작성 시, template 형태로 사용하도록 config 파일에 설정해주어야 합니다.

git config commit.template '프로젝트 경로/git-commit-template.txt'

  • 모든 프로젝트에 일괄적으로 template을 적용하는 경우 --global 옵션을 추가한다.
  • 잘 등록되었는지 확인하기 위해 git config --list로 확인해볼 수 있다.

config 파일에 등록하는 예시
git config commit.template ./git-commit-template.txt

결과
생성 결과



Commit template 개인설정

졸업과정으로 진행하는 프로젝트의 Template을 공유하겠습니다.

# <타입> : <제목> 형식으로 작성하세요
################
# 타입 설정하기
## feature : 새로운 기능 추가
## fix : 버그 수정
## docs : 문서 수정
## test : 테스트 코드 추가
## refactor : 코드 리팩토링
## style : 코드 의미에 영향을 주지 않는 변경사항
## chore : 빌드 부분 혹은 패키지 매니저 수정사항
# 제목 설정하기
## 제목 작성 후 공백 한줄을 포함해야, 제목과 본문이 구별됨
## 제목 첫 글자는 대문자로 작성, 마침표를 사용하지 않음
## 제목은 명령문으로 사용, 과거형을 사용하지 않음
## 제목은 50글자로 제한
################
##### 제목을 아랫줄에 작성하세요 #####


################
# 본문 설정
## 본문 작성 후 공백 한줄을 포함해야, 본문과 Resolves가 구별됨
## 본문의 각 행은 72글자로 제한
## 본문은 "왜"와 "무엇을"위주로 작성
## 본문은 행으로 구분되어야 함
## 본문의 내용은 *으로 시작함
################
##### 본문(추가 설명)을 아랫줄에 작성하세요 #####

################
# Resolves 설정
## Resolves 작성 후 공백 한줄을 포함해야, Resolves와 See also가 구별됨
## Resolves의 내용도 *으로 시작함
## 해결한 이슈는 닫을 수 있도록 함.
# 이슈 종료 방법
##  '키워드 #이슈번호'
# issue 종료 키워드 (github)
## * close - 일반 개발 이슈
## * closes
## * closed
## * fix - 버그 fix 이슈
## * fixed
## * resolve - 문의 요청사항 이슈
## * resolves
## * resolved
################
##### Resolves를 작성하세요 (생략 가능) #####

################
# See also 설정
## 연관된 이슈의 경우 이슈 번호와 연관 이슈 내용을 입력
## See also의 내용도 *으로 시작함
################
##### See also를 작성하세요 (생략 가능) #####

################
# Remember me ~ Commit Message 규칙
## 1. 제목과 본문을 빈 행으로 구분한다.
## 2. 제목을 50글자 내로 제한
## 3. 제목 첫 글자는 대문자로 작성
## 4. 제목 끝에 마침표 넣지 않기
## 5. 제목은 명령문으로 사용하되, 과거형을 사용하지 않는다.
## 6. 본문의 각 행은 72글자 내로 제한
## 7. 어떻게 보다는 무엇과 왜를 설명
################

템플릿 작성 시 형태

템플릿 작성 후 Commit Log


git log

git log --oneline




Reference

Meetup Blog post

profile
Software Engineer

0개의 댓글