본문 바로가기
Study

[Git] 커밋 메세지 컨벤션(Commit Message Convention)

by 곰돌찌 2021. 6. 17.

면접을 보다가 질문 중에 하나가 커밋 컨벤션에 대해서 질문이 나왔었다.

커밋 컨벤션을 알고 있는지, 왜 쓰면 좋은지에 대해서 물어본거 였는데,

사실 커밋을 기능단위로 쪼개는 등 이런 생각은 많이해왔지만 특별하게 어떠한 규칙으로 해봐야겠다는 생각은 구체적으로 해보지 않았다. 그래서 커밋컨벤션에 대해서 정리해보고자 한다.

(이렇게 면접으로 지식과 반성이 +1 됩니다)

 

Commit convention이라고 검색을 해보면 가장 먼저 나온 conventionalcommits.org 를 기반으로 하였다.

https://www.conventionalcommits.org/en/v1.0.0/

 

Conventional Commits

A specification for adding human and machine readable meaning to commit messages

www.conventionalcommits.org

 

일단 커밋 컨벤션을 할 때의 장점

: 커밋을 통해서 작업단위를 구분할 수 있도록 도와준다. ( 커밋의 타입을 지정할 때, 해당 커밋만 들어가도록 생각하기 때문에 작은 단위로 커밋을 분리하고 설명을 자세히 쓸 수 있기 때문!)

또 커밋을 정리하고 관리할 수 있도록 도와줄 수 있다고 생각한다. 깃헙에서 커밋을 검색할 수 있는데 여기서 동일한 레이아웃의 커밋으로 작성하게 되면, 찾기가 쉬울 것 같다.

빌드와 배포 프로세스에서 어느 부분까지 배포할지 빌드할지 정할 수 있는 기준이 된다.

협업할 때, 다른 동료 개발자가 무엇을 수정했는지 등을 쉽게 알수 있도록 해준다.

 

그렇다면 커밋 메세지는 어떻게 작성하는 것이 좋을까?  위의 홈페이지에 따르면 커밋의 구조는 아래처럼 작성하도록 권고한다.

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

 

1. <type> 

  타입은 커밋의 종류를 의미하는데 가장 기본적으로 커밋을 검색하기에 가장 큰 역할을 수 할 수 있을 것 같다.

  타입의 종류는 아래와 같다.

  - fix : 버그 패치

  - feat : 새 기능 추가

  - docs : 문서 수정

  - refactor : 버그도 아니고 새로운 기능이 추가되거나 그런게 아닌 코드 수정을 할 때

  - style :  코드의 전체적인 중요 변경되는 것이 아니라 스타일이나 세미콜론 안찍은거나 띄어쓰기 같은관련 수정

  - build : 빌드시스템에 변화가 있거나 외부 라이브러리를 추가했을 때

  - perf : 퍼포먼스 측면에서 코드에 변화를 주었을 때

  - test : 빠진 테스트나 테스트 코드를 수정할 때

 

2. [optional scope] 

  영향을 받은 npm 패키지 이름을 적는 것이라고함..!

  자세한 내용은 아래에서 확인이 필요함.

  https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines

 

3. <description>

  설명을 적는 부분

 

4. [optional body] 

  설명보다 더 자세하게 작성하는 바디 부분

  선택사항이라 적어도 되고 안적어도되고!

 

5. [optional footer]

  말꼬리 부분! 얘도 선택사항

 

 

**

엄청나게 크게 변화를 하는데 사람들이 알아줘야할 때에는 footer 영역에 BREAKING CHANGE: 라는 단어를 쓰고 뒤에 설명을 쓰거나

type을 적고 ! 를 붙여 넣는다.

약간 강조를 해주는 느낌으로 사용하면된다.

댓글