일관적인 Commit Log를 통해 서로 다른 사람들이 작업한 내용을 쉽게 파악하고, 유지보수 할 수 있도록 하기 위해 Commit을 남기는 규칙
Header
Commit Log의 제목을 나타내는 Header 부분 너무 길지만 않으면 됨 일반적으로 Tag가 붙고, Tag 뒤로 작업의 대략적인 내용이 붙음
Ex) [feat] add rest api code
feat(새로운 기능) refactor(리팩토링) fix(버그 수정 및 typo) style(코드 포맷팅 또는 주석처리) comment(주석 추가 및 변경) chore(빌드 수정, 패키지 관리자 수정) test(테스트 코드) docs(문서 작업) remove(파일 삭제) rename(파일 혹은 폴더명을 수정하거나 옮기는 작업)
Body
Header에 적기 너무 길다면 Header를 줄이고 Body에 작성한다. Header와 한칸 공백을 만들어주면 좋다(Enter)
Body가 생략되는 경우 feat - add multiply function with two variables Body가 생략되지 않는 경우 refactor - modify api handler logic
- change logic 1 - change logic 2
Footer
해당 작업과 관련된 Issue의 Tag를 붙인다. Issue Tag를 추가하는 이유는 Commit Log에 Issue Tag를 남기면 Github에서 자동으로 해당 태그를 인식해 관련된 Commit을 연결해준다. Issue Tags는 #(Issue 번호)로 적는다.
Commit message template
1. .gitmessage.txt 파일 생성
touch .gitmessage.txt
2. 편집기를 열고 템플릿 입력 (i 키 누르면 insert)
vim .gitmessage.txt
'#'으로 시작하는 부분은 주석으로 commit에 반영되지 않는다.
# Header : ex) [feat] 데이터 전처리
# -- 아래는 Header와 Body 분리 공백 --
# Body : "-"로 구분
# Footer : ex) # issue번호
### Commit type ###
# feat : 새로운 기능
# refactor : 리팩토링
# fix : 버그 수정 및 typo
# style : 코드 포맷팅 또는 주석처리
# comment : 주석 추가 및 변경
# chore : 빌드 수정 및 패키지 관리자 수정
# test : 테스트코드
# docs : 문서 작업
# remove : 파일 삭제
# rename : 파일 또는 폴더명을 수정하거나 옮기는 작업
공백 제거, end-of-file 검사, yaml 검사, 대용량 파일 검사 등이 기본 값으로 등록되어 있음
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
pep8에 맞게 형식을 정리해주는 black 툴을 추가하는 경우
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: stable
hooks:
- id: black
3. 작성 후 hook을 설치하기 위해 pre-commit install 및 pip install black 명령어를 사용
먼저 작업해야할 사항이 있다면 Issue로 내용을 등록하고, 각 Issue에 맞는 feature 브랜치를 생성해 작업을 진행
feature 브랜치를 생성할 떄 브랜치 명에 Issue Tag를 붙이면 식별하기 좋다. feat-2/branch-name (2번 Issue를 해결하는 기능 구현 브랜치)
Issue Template
- Background : 왜 이 작업을 해야하는지 - To do: 어떤 작업을 해야하는지 - Issue Tag: 관련된 다른 Issue나 작업은 무엇이 있는지 - Github Repository Setting - Feature - Issue - Setup template에서 등록할 수 있다. - 실제로는 .github 경로에 추가된다.
## Background
-
## To Do
- [x]
## Description
-
## 고려사항 및 예외사항
-
추가 방법
settings > Features > Set up templates
Issue를 생성하고 Commit Message에 #1 이라고 작성하면 해당 Issue에 자동으로 Commit Message가 연결된다.
PR template
Issue template과 다르게 .gitjub 경로에 .md 파일을 직접 추가해주어야 한다. '.github/PULL_REQUEST_TEMPLATE.md'
## Overview
-
## Change Log
-
## To Reviewer
## Issue Tags
- Closed | Fixed : #
- See also : #