[Git] commit convention (type: subject의 중요성)

commit은 버전을 확정 시키는 작업이지요

여러분들은
commit시 message를 어떻게 남기시나요?

누군가 정해주지 않더라도 경험상 체득할 수 있습니다
"왜", "언제"에 대한 이유는 경험상 알고있기에
"어떻게"에 대해 공유해보겠습니다

다음 사진은, 알고리즘 공부의 기록을 위한 commit 입니다
버전의 관리가 필요없고, 기록만을 위한 commit이기에 문제가 없지만

project에서는 경우가 다릅니다

여러개의 commit message가 쌓여있을때
원하는 버전으로 가기 위해서 commit을 확인해야하는데 message가 저렇다면 식은땀이 나겠죠?

어떻게

그럼 commit시 message는 어떻게 남기는게 좋을까요?
당연하게도 해당 버전을 유추할 수 있는 설명을 써두어야 합니다

하지만 설명을 쓰는 방법이 존재합니다

혼자만 작업한다면 나만 알아볼 수 있으면 되지만
협업이나 원격 저장소에 공유한다면 타인이 봐도 알아볼 수 있어야 합니다

개인적으로는, 혼자 작업하는 project여도 양식 없이 message를 작성하는 것은 나쁜 습관이라 생각합니다

그때의 기분에 따라 message 구조가 바뀔 수 있고
내가 한 것이지만 내가 못 알아보는, 욕 나오는 상황이 나올 확률이 매우 높아집니다
책 "clean code" 중 이미지

commit message convention

따라서 "어떻게"에 대한 세계 공통 관습이 있을 것이라 추측 할 수 있습니다
추측하신대로, commit message에도 convention 이 존재합니다

commit message convention 에 대해 알아보겠습니다

https://udacity.github.io/git-styleguide/

commit message는 다음과 같이 구성됩니다

message structure
type: Subject
공백 한 줄
body
공백 한 줄
footer
  • type과 subject는 title이라 불리며, 필수로 작성해야 하고
  • body와 footer는 필요한 경우에 작성합니다

type :

  • commit의 type을 명시합니다
  • 7가지 type이 존재합니다
    • feat:A new feature
    • fix: A bug fix
    • docs: Changes to documentation
    • style: Formatting, missing semi colons, etc; no code change
    • refactor: Refactoring production code
    • test: Adding tests, refactoring test; no production code change
    • chore: Updating build tasks, package manager configs, etc; no production code change

subject :

  • 50글자가 넘지 않도록 합니다
  • 동사(원형)를 맨 앞에 쓰며, 첫 글자는 대문자로 표기합니다
  • 마침표는 찍지 않습니다

body :

  • 긴 설명이 필요한 경우에 작성합니다
  • 무엇을 왜 했는지를 작성해야 합니다 (어떻게 했는지가 아니라...!)
  • 한 줄 당 75자를 넘기지 않도록 합니다

footer :

  • issue tracker ID를 명시하고 싶은 경우에 작성합니다

예시는 다음과 같습니다
"감이 오시나요?"

type: Subject의 중요성

그 중 title은 가장 중요하다고 생각됩니다

github에서 볼 수 있는 화면
type: Subject가 보인다
아니, type: subject만 보인다...!

cf. 
1. type 은 첫글자도 소문자로 쓰는건데 대문자로 썻네요...! 
2. 처음 써본거라 길이에 대한 감과, 어느정도의 정보를 써야하는지에 대한 감이 없었네요...! 
저도 올바른 개발자 문화에 동참하기 위해 차츰 보완해 나가겠습니다

원격 저장소(remote repository)인 github에서 보이는 화면입니다
commit message의 type: Subject 부분만 보이게 됩니다

local repository 에서의 git log를 봐도 마찬가지로 type: Subject 부분만 보이게 됩니다

이러한 성격때문에 type: Subject 부분은 title이라 불리며, 가장 중요한 부분이라 할 수 있겠습니다

"title은 가장 직접적이며, 소통에 있어서 가장 강력한 부분입니다!"
따라서 적당한 길이, 핵심적인 설명을 써야합니다

그러나...

물론, 참여하는 조직의 convention이 존재 한다면 당연하게도 조직의 convention을 따라야 합니다

"말 그대로 convention 이니까요...!"

Python의 github 화면입니다

조금 다르긴 해도 Python의 조직이 갖고 있는 규칙성을 갖고 commit message를 구성하는 걸 볼 수 있습니다

git message에 대한 좋은 자료(convention의 이유에 대한 git의 전체적 그림)

https://meetup.toast.com/posts/106 한글 번역
https://cbea.ms/git-commit/ 원본

좋은 웹페이지 즐겨찾기