깃 커밋 메시지 컨벤션(Git Commit Message Convention)
개인적으로 공부하면서
몇 개의 정말 소소한..
작고 소중한.. 개인 프로젝트를 진행했었는데
이러한 프로젝트는 모두
'깃으로 형상관리를 해야지~~'라는
원대한 목표화 함께 깃허브에 업로드해두었습니다.
하지만 지금도 잘못하지만
이제 와서 깃과 깃허브에 대한 공부를 조금이라도 하고 보니
얼마나 묘상한 커밋을 해왔는지 느낄 수 있었습니다..
살짝 수치스러운 느낌이라
누군가 볼까 부끄러운..
다시 돌이켜보니
저는 깃을 이용해 제 토이 프로젝트의 '형상 관리'를 했다기보단
그냥 깃과 깃허브를 제가 이만큼 했다고 어필하기 위한 '저장소'쯤으로 활용한 것 같습니다.
토이 프로젝트를 진행했을 때는
너무나 미숙해서 어느 부분까지 끊어서 커밋해야 하고
어느 부분까지가 연결되는 내용인지를 파악하지 못해서 그랬던 것 같아요
(물론 지금도 모릅니다!)
이러한 미숙한 커밋 역사도 제 성장의 기록으로는 의미 있다고 생각합니다. 😂
하지만 이런 미숙함이 의미 있으려면
전에 비해 성장한 모습을 보여주는 것이 포인트이기 때문에
오늘은 깃의 커밋 규칙이라고 볼 수 있는
'깃 커밋 메시지 컨벤션'에 대해 알아보려고 합니다.
제목에서도 알 수 있듯이 컨벤션(Convention), 즉 '관습'입니다.
모두가 따르는 '규칙'은 아니지만
모든 개발자들이 일정 부분 따르는 관습이기 때문에
이러한 컨벤션에 따라 커밋 메시지를 작성하는 것이
후에 협업에 있어서 타개발자와 협업하는데 있어서 큰 도움을 줄 것이라고 생각합니다.
커밋 메시지 구조
😀 [타입(type)] : 제목(subject)
😀 본문(body)
😀 푸터(footer)
위 구조는 가장 흔히 쓰이는 커밋 구조로
유다시티의 스타일을 참고한 것이다.
타입
😀유다시티에서는 7개 종류의 타입의 사용을 권장하고 있다.
타입 종류
- feat : 새로운 기능 추가
- fix : 오류 수정
- docs : 문서 관련 수정
- style : 코드의 변화하지 않는 수정 ex) 세미콜론(;), 들여 쓰기
- refactor : 코드의 리팩터링
- chore : 빌드 혹은 패키지 매니저 수정사항
- test : test 코드 삽입 및 수정
제목
😀 제목은 가능한 간결하게 50자 내로 작성한다.
😀 제목의 시작은 대문자로 작성한다.
😀 제목은 동사 단어로 작성을 시작하고 명령문으로 작성한다.
😀 제목에는 마침표를 사용하지 않는다.
제목에 자주 쓰이는 동사 단어
FIX
- ex) Fix git, Fix error
- in으로 수정 위치를 나타낼 수 있다.
ex) Fix typo in git.java - to/for로 수정 이유를 나타낼 수 있다.
- when을 통해 어느 상황에서 발생한 에러를 수정했는지 나타낼 수 있다.
ADD
- 코드나 문자를 추가할 때 사용한다.
- for이나 to와 함께 사용해 추가한 이유나 추가한 위치를 나타낼 수 있다.
REMOVE
- 코드를 삭제했을 때 사용한다.
RENAME
- 이름 변경이 있을 때 사용한다.
Simplify
- 코드를 단순화하는 경우 사용한다.
Move
- 코드나 파일 등이 이동하는 경우 사용한다.
본문
😀 본문은 한 줄 당 72자 내로 작성한다.
😀 본문은 최대한 상세히 작성한다.
😀 본문에는 무엇을 왜 변경했는지를 작성한다.
푸터
😀 푸터의 작성은 생략해도 된다.
😀 푸터는 이슈 트랙킹을 위해 사용된다.
깃모지(Gitmoji)
- 아이콘을 이용한 커밋 메시지 작성입니다.
- 위 사이트에서 어떤 상황에 어떤 아이콘을 사용하는지 확인할 수 있습니다.
커밋 템플릿
😀 커밋 템플릿을 사용해 커밋 과정을 조금 더 형식화할 수 있습니다.
커밋 템플릿 작성 예시
- 많은 블로거들이 커밋 템플릿을 제공하고 있어 'Harry's diary'에서 제공하는 템플릿을 퍼왔습니다.
- #으로 처리된 곳은 주석 처리됩니다.
- 위와 같이 작성한 텍스트 파일을 생성합니다.
- [ git config --global commit.template <.gitmessage.txt 경로> ]
- 위와 같은 형식으로 명령어를 작성하고, gitmessage.txt에는 텍스트 파일 경로를 입력합니다.