-
Git - Commit Message ConventionProgramming/Git 2021. 12. 22. 14:51
안녕하세요. BeePeach 입니다 :0
Git 커밋 메세지를 작성할 때 지금까지는 저만의 기준으로 작성을 해왔습니다.
하지만 공통적으로 따르고 있는 컨벤션이 있다면 그 기준을 따라주는 게 협업을 하는데 도움이 되겠죠.
이 포스팅에서 다루는 컨벤션이 정답은 아닙니다. 다른 기준이 있을 수 있고 팀마다 컨벤션이 다르겠죠???
그리고 커밋의 단위는 되도록 한 작업을 여러 번에 걸쳐서 작성하는 게 아니라 한 개의 커밋으로 작성합니다.
또한 여러 작업을 한 개의 커밋으로 작성하지 않습니다.
Commit Message Structure
커밋 메세지의 기본 구성은 title, body, footer로 구분됩니다.
Title은 반드시 작성해야 하고 body, footer는 생략해도 됩니다.
Title에는 어떤 의도로 commit을 작성했는지에 대한 type과 제목을 같이 적어줍니다.
Body에는 자세한 설명을 적어줍니다.
Footer에는 issue traker ID가 필요한 경우 작성합니다.
7가지 Convention
영문 작성을 기준으로 아래 7가지 중요한 컨벤션이 있습니다.
- Title과 body는 한 줄 띄어쓰기
- Title은 영문 기준 50자 이내로 작성
- Title 첫 글자는 대문자로 작성
- Title에는 .(Period) 금지
- Title은 명령문으로 작성 (동사 원형이 맨 앞으로)
- Body는 영문 기준 72자마다 띄어쓰기
- Body는 무엇을 왜 변경했는지에 대해서 작성
위 컨벤션은 영문을 기준으로 작성된 컨벤션입니다.
만약 한글로 작성한다면 몇 가지 달라지는 점이 존재하겠죠??
- Title과 body는 한 줄 띄어쓰기
- Title은 너무 길지 않게 작성 (30글자??)
- Title에는 .(Period) 금지
- Title은 명령문으로 작성 (동사를 먼저 적어준다.)
- Body도 적당한 시점에 띄어쓰기 (30-35글자??)
- Body는 무엇을 왜 변경했는지에 대해서 작성
Title과 Body의 길이가 좀 모호해지는데 영문과 비슷한 길이로 적당한 부분에서 띄워주면 될 거 같네요.
Title
type: Subject
이렇게 type과 :를 적어주고 한 칸 띄운 후 제목을 적어줍니다.
Type은 tag를 사용해서 변경점이 어떤 것인지 간략하게 나타내고 Subject에서는 제목을 적어주면 됩니다.
영문의 경우 title의 시작은 대문자로 시작합니다.
이유는 원래 영어 문법이 시작은 대문자로 시작하기 때문입니다. 우리는 그런 규칙이 없기 때문에 지키지 않는 경우가 많은데 영어가 모국어인 분들이 보면 좀 불편하다고 하네요!
Title 마지막에 .(period)를 작성하지 않는 것도 영문법의 이유입니다.
Tag의 종류
태그 설명 feat 새로운 기능을 추가 fix 버그를 수정 refactor Production 코드 리펙토링 test Test를 추가, Test 코드 리펙토링
(production code에는 변경이 없음)design UI 디자인 변경 rename 파일 이름 변경 remove 파일 삭제 docs documetation을 변경 style Formatting, 세미콜론 추가
(code에는 변경이 없음)chore Build task를 업데이트, package manager 설정
(production code에는 변경이 없음)comment 주석을 추가하거나 삭제했을때 자주 사용되는 type의 tag는 다음과 같습니다.
더 많은 tag가 있지만 주로 사용하는 tag만 적었습니다.
tag대신 이모지를 사용하는 경우도 존재합니다.
이모지에 대한 설명은 이곳을 참고해주세요.
Body
Body는 필수적인 요소가 아닙니다.
변경사항에 대해서 상세적인 내용을 적을 때 이곳에 작성합니다.
그리고 반드시 Title과 한칸 띄어 써줘야 합니다.
그 이유는 git log로 확인할 때 이 한 칸의 유무로 인해서 가독성이 크게 증가하기 때문입니다.
영문으로 작성할 때는 72자를 기준으로 띄어 써줍니다.
그 이유는 git log로 commit메시지를 확인하면 띄어쓰기를 자동으로 해주지 않습니다.
그래서 그냥 간단히 git log로 메세지를 볼 때 깔끔해 보이기 위해서 적정기준을 두고 띄어쓰기를 해주면 좋습니다.
가장 중요한 부분은 무엇을 어떻게 바꿨는지 작성하는 게 아니라 왜 변경했는지를 작성해야 합니다.
무엇을 어떻게 바꿨는지는 이미 git diff를 통해서 확인할 수 있습니다.
Footer
Footer도 필수적인 요소가 아닙니다.
주로 이슈에 관련된 내용을 작성합니다.
Body와 한 칸 띄우고 작성해주면 됩니다.
위와 같이 작성해주면 됩니다.
Tag의 종류
태그 설명 close 이슈 종료 fix 이슈 종료 resolve 이슈 종료 ref 참고해야하는 이슈 close, fix, resolve는 모두 이슈를 종료시킬때 사용합니다.
참고자료
https://udacity.github.io/git-styleguide/
https://meetup.toast.com/posts/106
https://overcome-the-limits.tistory.com/entry/협업-협업을-위한-기본적인-git-커밋컨벤션-설정하기
728x90'Programming > Git' 카테고리의 다른 글
CLI - cat 명령어 (0) 2020.11.20 CLI - Directory, file 생성 (0) 2020.10.28 CLI - cd 명령어 (0) 2020.10.26 CLI 알아보기 (0) 2020.10.23