Welcome! Everything is fine.

[Git] 커밋 메세지 컨벤션(Commit Message Convention) 가이드 본문

TIL

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

개발곰발 2023. 10. 25.
728x90

커밋 메세지를 아무렇게나 작성하는 것에서 벗어나 컨벤션에 따라 일관성있게 작성해보자! 커밋 메세지 컨벤션에 따라 작성하면 가독성도 좋아지고 협업 시에도 더 도움이 될 것이다.

 

내용은 아래 커밋 메세지 컨벤션을 번역해 간단하게 정리하였다.

 

AngularJS Git Commit Message Conventions

AngularJS Git Commit Message Conventions. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

📌 커밋 메세지 형식

커밋메세지는 header, body, footer로 구성되며 빈 줄을 띄워 나눈다. 커밋 메세지는 읽기 쉽게 한 행에 100자를 넘기지 않도록 작성한다.

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

📌 header

  • header는 변경사항에 대한 설명을 간결하게 표현해야한다.
  • header는 type, scope, subject로 구성된다.

type

type은 변경 사항이 어떤 종류인지 나타내는 단어나 약어를 말한다.

타입 설명
chore 빌드 테스크, 패키지 매니저 설정할 때
feat 새로운 기능을 추가했을 때
docs 문서를 수정했을 때
refactor 리팩토링 했을 때 
test 테스트를 추가하거나 테스트 리팩토링 했을 때
fix 버그를 고쳤을 때
style 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없을 때
remove 코드(파일)를 삭제했을 때
rename 파일명을 변경했을 때

scope

scope는 변경 사항이 적용되는 범위나 영역을 나타내며, 어떤 것이든 될 수 있다. 예를 들어 $location, $browser, $compile, $rootScope, ngHref, ngClick, ngView, 등과 같이 쓸 수 있다. 사용자는 적합한 scope가 없는 경우 '*'를 사용할 수 있다.(이 부분은 이해가 잘 되지 않아서 chatGPT에게 물어봤더니 다음과 같은 답을 해주었다.)

"*"를 사용하는 것은 "Scope"를 비워두는 것과 유사한 역할을 합니다. 이것은 커밋이 특정 위치나 영역과 관련이 없을 때 사용되며, 이렇게 하면 다른 개발자들이 커밋 메시지를 읽을 때 어떤 "Scope"가 없음을 이해할 수 있게 도와줍니다.

subject

subject에는 변경 사항에 대한 설명을 아주 짧게 적는다. 주의사항은 다음과 같다.

  • 명령형, 현재형 시제를 사용한다.("changed"나 "changes"가 아닌 "change")
  • 첫 문자를 대문자로 적지 않는다.
  • 끝에 온점(.)을 찍지 않는다.

📌 body

  • 명령형, 현재형 시제를 사용한다.("changed"나 "changes"가 아닌 "change")
  • 해당 변경 사항이 필요한 이유를 설명한다.
  • 이전 동작이나 상태와 비교해 무엇이 다른지 설명한다.

📌 footer

Breaking changes

  • 모든 "breaking changes"는 커밋 메시지의 "footer" 부분에 "breaking change block"으로 언급되어야 한다.
  • "breaking change block"은 "BREAKING CHANGE:"라는 단어로 시작하고, 그 뒤에 한 칸을 띄우거나 또는 두 줄의 공백을 두어야 한다.
  • 커밋 메시지의 나머지 부분은 변경 사항의 설명, 정당성, 및 이전 버전에서의 마이그레이션에 대한 노트를 포함해야 한다.

Referencing issues

이미 해결된 버그를 커밋 메세지에 포함하려면 'Closed'라는 키워드를 사용하고 별도의 줄에 명시되어야 한다.

Closes #234

 

이슈가 많을 경우 다음과 같이 작성한다.

Closes #123, #245, #992

 

더 자세한 예시는 커밋 메세지 컨벤션링크를 통해 확인할 수 있다. 꼼꼼히 읽어보고 깔끔한 커밋 메세지를 작성할 수 있도록 노력하자! 

'TIL' 카테고리의 다른 글

[Git] 깃 특정 브랜치만 clone하기  (0) 2022.06.16
[TIL] 220306  (0) 2022.03.06
[TIL] 220302  (0) 2022.03.02
[TIL] 220223  (0) 2022.02.23
[TIL] 220222  (0) 2022.02.22