[Github] 깃 커밋 메시지 컨벤션 (Git Commit Message Convention)

smlee·2022년 7월 11일
2

Github

목록 보기
1/2
post-thumbnail

👀 들어가며

깃허브에 커밋을 할 때 우리는 커밋 내용을 작성하고,
협업을 할 때 커밋 히스토리를 확인하여 어떤 부분이 변경되었고 어떤 부분이 삭제되었는지, 그리고 어떤 부분이 추가되었는지를 알 수 있다.

하지만 위와 같이 작성을 하면 시간이 오래 지난 후
잘 적어놓았다고 하더라도 커밋 내용에 대한 기억이 흐려지기 마련이다.

위 이미지의 경우 README에 어떤 내용을 커밋했는지를 알 수 없고, 작업한 내용을 적어놓았다고 하더라도 가독성이 떨어지는 문제점을 가지고 있다.

협업 과정에서 가장 중요한 것 중 하나는 의사 소통이다. 하지만 위의 커밋 메세지로는 다른 사람의 작업 내용을 알기란 쉽지 않다. 따라서 깃허브 커밋 메세지를 작성할 때도 어느 정도의 컨벤션이 있다.

위의 커밋 히스토리는 커밋 메시지 컨벤션을 사용하여 작성된 메시지들이다. 커밋 메시지들을 사용하면 가독성을 높이고 코드 리뷰를 용이하게 해준다. 또한, 어떠한 작업을 했는지 상대적으로 명확해지므로 협업을 할 때 유용하게 사용된다. 따라서 이러한 커밋 메시지 컨벤션을 정리해보려고 한다.

📜 커밋 메시지 구조

커밋 메시지는 type, body, footer로 나뉜다.

type [옵션] : [#issueNumber] Subject제목
[한 줄 공백으로 body와 구분]

body : 본문
[한 줄 공백으로 footer와 구분]

footer : 꼬리말
  1. type
    • 어떤 의도로 커밋했는지 type에 명시
      - feat : 새로운 기능을 추가한 경우
      • fix : 버그를 고친 경우
      • design : CSS 등 사용자 UI 디자인 변경
      • !BREAKING CHANGE : 큰 API 변경이 있을 경우
      • !HOTFIX : 급하게 치명적인 버그를 고친 경우
      • style : 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
      • refactor : 프로덕션 코드 리팩토링
      • comment : 필요한 주석 추가 및 변경
      • docs : 문서를 수정한 경우
      • test : 테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 x)
      • chore : 빌드 테스트 업데이트, 패키지 매니저 설정 등 프로덕션 코드 변경없이 이루어지는 자잘한 수정
      • rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업인 경우
  2. subject
    • 최대 50글자가 넘지 않도록 하고, 마침표는 찍지 않는다.
    • 영문으로 표기하는 경우 동사(원형)를 맨 앞에 두고 첫 글자는 대문자로 표기
  3. body
    • 긴 설명이 필요한 경우에 작성
    • 어떻게가 아닌, 무엇을, 했는지를 작성한다.
    • 한 줄최대 72자를 넘기지 않도록 한다.
    • 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
  4. footer
    • issue tracker ID를 명시하고 싶은 경우에 작성
    • optional
    • 유형: #이슈 번호 형식으로 사용한다.
      - 여러 개의 이슈 번호를 적을 때는 쉼표로 구분한다.
    • 유형은 다음과 같다.
      - fixes : 이슈 수정 중(아직 해결 X)
      • resolves: 이슈가 해결됐을 때
      • ref: 참고할 이슈가 있을 때
      • related to: 해당 커밋에 관련된 이슈 번호
    • footer 예시
      - fixes: #40 related to : #12, #33

🎯 커밋 메시지 emoji

사용 이모지Description
🎨코드의 형식/구조를 개선
📰새 파일을 만들 때
📝사소한 코드 또는 언어를 변경
🐎성능 향상
📚문서 작성
🐛버그 reporting : @FIXME 주석 태그 삽입
🚑버그를 고칠 때
💚CI 빌드 고칠 때
🔥코드 또는 파일을 제거할 때 @CHANGED 주석 태그와 함께 사용한다.
🔨코드를 리팩터링할 때
💄UI/Style 개선
🎉Initial Commit
🐳Docker 구성
💎New Release
🐧리눅스에서 무엇을 수정할 때
🍎Mac OS에서 무엇을 수정할 때
🏁Windows에서 무엇을 수정할 때
🔒보안을 다룰 때
☔️테스트를 추가할 때

📚 Reference

  1. Git - 커밋 메시지 컨벤션
  2. [Git] 내가 보려고 정리하는 Commit Message Convention

0개의 댓글