git을 혼자 사용할 때야 나만 알아볼 수 있으면 그만이지만, 협업을 위해서는 다른 사람도 쉽고 빠르게 알아볼 수 있도록 로그를 작성하는 게 중요하다.
그래서 이번 포스팅에서는 통상적으로 사용되는 Git의 커밋 메시지 컨벤션과 규칙에 대해 작성해보고자 한다.
좋은 커밋 메시지를 작성하기 위한 7가지 규칙
- 제목과 본문을 한 줄 띄워 분리하기
- 제목은 50자 이내로
- 제목 첫글자를 대문자로
- 제목 끝에 . 금지
- 제목은 명령문(동사원형)으로, 과거형 금지
- 본문은 72자마다 줄 바꾸기
- 본문은 어떻게 보다 무엇을, 왜에 맞춰 작성하기
Commit message 구조
커밋 메시지는 제목, 본문, 꼬리말로 구분하며 각 파트는 빈 줄로 구분한다.
type: subject
body
footer
Commit Type
<타입>[적용 범위(선택 사항)]: <설명> 형식으로 작성하되
<설명>은 콜론 뒤 하나의 공백을 유지하고 작성한다.
타입의 첫 문자는 대문자로 작성한다.
- feat: 새로운 기능 추가
- fix: 버그 수정
- docs: 문서 수정
- style: 코드 스타일, 포맷팅에 대한 수정 (코드에 영향을 주지 않는 변경사항)
- refactor: 코드 리팩토링
- test: 테스트 코드, 리팩토링 테스트 코드 추가
- chore: 빌드 업무 수정, 패키지 매니저 수정
- ci: ci구성파일 및 스크립트 변경
- perf: 성능 개선
Subject
- 제목은 최대 50글자. 마침표, 특수기호 사용x
- 제목은 개조식 구문으로 작성. 즉, 서술형 문장이 아닌, 간결한 요점 작성을 의미.
Body
- 본문은 한줄 당 72글자 이내.
- 본문 내용은 양에 구애받지 않고 최대한 자세하게 작성.
- 본문 내용은 어떻게 변경했는지 보다 무엇, 혹은 왜 변경했는지 설명.
footer
- 꼬리말은 선택사항이고 이슈 트래커 ID를 작성.
- 꼬리말은 "유형: #이슈 번호" 형식으로 작성.
- 여러 개의 이슈 번호를 적을 때는 쉼표( , )로 구분.
- 이슈 트래커 유형은 다음 중 하나를 사용.
- Fixes: 이슈 수정 중
- Resolves: 이슈를 해결했을 때 사용.
- Ref: 참고할 이슈가 잇을 때 사용
- Related to: 해당 커밋에 관련된 이슈 번호(아직 해결되지 않은 경우)
- ex) Fixes: #45 Related to: #34, #23
Commit 예시
Feat: 소셜 로그인 기능 구현
기존 로그인 방식에 카카오, 네이버, 구글 소셜 로그인 기능을 추가함
Resolves: #37
Ref: #138
Related to: #48, 23
커밋 메시지로 Github 이슈(issue) 자동 종료시키기
Github에는 커밋 메시지에 특정 단어를 사용해 이슈를 종료시키는 기능이 탑재되어 있다.
키워드 #이슈번호
이슈 종료로 인식하는 키워드
- close
- closes
- closed
- fix
- fixes
- fixed
- reslove
- resloves
- resolved
각 키워드마다 기능에 차이는 없고 문법이나 맥락에 맞게 사용하면 된다.
다만 close계열은 일반 개발 이슈, fix계열은 버그 픽스나 핫 픽스 이슈, resolve계열은 문의나 요청 사항에 대응한 이슈에 사용하는 관례가 있다.
위 키워드를 포함한 커밋을 작성해 푸시했을 때 푸시한 브랜치에 따라 이슈가 자동으로 닫힌다.
main브랜치에 푸시했다면 즉시 해당 번호의 이슈가 닫히지만, 다른 브랜치에 푸시했다면 나중에 main브랜치로 merge되엇을 때 이슈가 닫히게 된다.
레퍼런스
'Git' 카테고리의 다른 글
| .git디렉토리를 다른 디렉토리에 복사하면? (0) | 2023.03.30 |
|---|---|
| .gitignore 추가해도 untracked 되지 않을 때 해결 방법 (0) | 2023.03.30 |
| git add 시 staging 안되는 문제 (0) | 2023.03.29 |