좋은 커밋 메시지를 위한 컨벤션

2021년 09월 16일 (2달 전)
코드를 작성하면서 'Naming’은 간과하기 쉽지만 중요하면서도 잘 짓기가 어려운 것 같다. 하지만 커밋을 할 때의 커밋 메시지의 중요성은 대수롭지 않게 생각을 했었는데, 커밋 컨벤션을 한번 정해보고, 좋은 커밋 메시지를 작성하기 위해 커밋 메시지 컨벤션에 대해서 정리해본다.

커밋 메시지 구조

type:Subject

body

footer

커밋 유형(Commit Type)

  • add - 단순 파일 추가
  • feat - 새로운 기능 추가
  • fix - 버그 수정
  • design - CSS 등 사용자 UI 디자인 변경
  • style - 코드 포맷 변경, 세미 콜론 누락, 코드 수정 X
  • refactor - 프로덕션 코드 리팩토링
  • comment - 필요한 주석 추가 및 변경
  • docs - 문서를 수정
  • test - 테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X)
  • rename - 파일 혹은 폴더명을 수정하거나 옮기는 작업
  • remove - 파일을 삭제하는 작업만 수행
  • build - 빌드 시스템에 변화가 있거나 외부 라이브러리 추가
  • ci - CI 관련 설정 수정
  • chore - 위의 커밋 유형 이외, 빌드 테스크 업데이트, 패키지 매니저를 설정하는 경우(프로덕션 코드 변경 X) 등

제목(Subject)

  1. 제목과 본문을 한 줄 띄워 분리하기
  2. 제목은 영문 기준 50자 이내로 작성하기
  3. 제목 첫글자를 대문자로 작성하기
  4. 제목 끝에 “.” 붙이지 않기
  5. 제목은 명령조로 작성하기

본문(Body)

  1. 선택 사항이므로 작성하지 않아도 무방하다
  2. 부연 설명이 필요하거나 커밋의 이유를 전달해야 할 경우 작성한다
  3. 본문은 어떻게 보다 무엇을, 왜에 맞춰 작성하기
  4. 한 줄이 72자를 넘기지 않도록 줄을 바꿔준다

푸터(Footer)

  1. 선택 사항이므로 작성하지 않아도 무방하다
  2. 주로 이슈 트래커 아이디 참조로 사용된다

예시

feat: Summarize changes in around 50 characters or less

More detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of the commit and the rest of the text as the body. The
blank line separating the summary from the body is critical (unless
you omit the body entirely); various tools like `log`, `shortlog`
and `rebase` can get confused if you run the two together.

Explain the problem that this commit is solving. Focus on why you
are making this change as opposed to how (the code explains that).
Are there side effects or other unintuitive consequenses of this
change? Here's the place to explain them.

Further paragraphs come after blank lines.

 - Bullet points are okay, too

 - Typically a hyphen or asterisk is used for the bullet, preceded
   by a single space, with blank lines in between, but conventions
   vary here

If you use an issue tracker, put references to them at the bottom,
like this:

Resolves: #123
See also: #456, #789

직접 써본 예시

fix: 도라에몽이 쥐를 무서워하는 버그 수정

도라에몽이 쥐를 잡아야 하지만, 쥐를 무서워하여 작동이 멈추는 버그가 있어 쥐를 무서워하지 않도록 버그를 수정

Resolves: #123
See also: #456, #789

참고

https://meetup.toast.com/posts/106
https://webruden.tistory.com/486