Git | git 커밋 컨벤션 설정하기

신세원·2021년 10월 11일
86

Git

목록 보기
1/2
post-thumbnail

Intro

개발자로 시작한지 얼마 안되고 나서, 첫 직장은 설립된지 얼마 안된, 지금도 다니고 있는 모든것을 처음부터 새로 시작하는 스타트업이다.
프론트엔드는 작성자 혼자 뿐이고, 아무것도 모르는 주니어 개발자가 하나부터 열까지 모든 것을 체계를 잡고 스스로 커나가야 하는 환경이다.
그러기에 나중에 후임이 들어왔을때나, 다른 사람과 협업을 할때 어떻게 하면 더 잘할 수 있을까 고민하다 통일성과 체계적인 일처리를 위해 커밋 컨벤션을 정리하기로 했다.
이 글은 유다시티의 커밋 메시지 스타일 가이드를 참조한 내용이다

1. Commit 메시지 구조

기본 적인 커밋 메시지 구조는 제목,본문,꼬리말 세가지 파트로 나누고, 각 파트는 빈줄을 두어 구분한다.

type : subject

body 

footer

2. Commit Type

타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자로 한다.

태그 : 제목의 형태이며, :뒤에만 space가 있음에 유의한다.

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • docs : 문서 수정
  • style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • refactor : 코드 리펙토링
  • test : 테스트 코드, 리펙토링 테스트 코드 추가
  • chore : 빌드 업무 수정, 패키지 매니저 수정

3. Subject

  • 제목은 최대 50글자가 넘지 않도록 하고 마침표 및 특수기호는 사용하지 않는다.
  • 영문으로 표기하는 경우 동사(원형)를 가장 앞에 두고 첫 글자는 대문자로 표기한다.(과거 시제를 사용하지 않는다.)
  • 제목은 개조식 구문으로 작성한다. --> 완전한 서술형 문장이 아니라, 간결하고 요점적인 서술을 의미.
* Fixed --> Fix
* Added --> Add
* Modified --> Modify

4. Body

본문은 다음의 규칙을 지킨다.

  • 본문은 한 줄 당 72자 내로 작성한다.
  • 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
  • 본문 내용은 어떻게 변경했는지 보다 무엇을 변경했는지 또는 왜 변경했는지를 설명한다.

꼬릿말은 다음의 규칙을 지킨다.

  • 꼬리말은 optional이고 이슈 트래커 ID를 작성한다.
  • 꼬리말은 "유형: #이슈 번호" 형식으로 사용한다.
  • 여러 개의 이슈 번호를 적을 때는 쉼표(,)로 구분한다.
  • 이슈 트래커 유형은 다음 중 하나를 사용한다.
    - Fixes: 이슈 수정중 (아직 해결되지 않은 경우)
    - Resolves: 이슈를 해결했을 때 사용
    - Ref: 참고할 이슈가 있을 때 사용
    - Related to: 해당 커밋에 관련된 이슈번호 (아직 해결되지 않은 경우)
    ex) Fixes: #45 Related to: #34, #23

6. Commit 예시

Feat: "회원 가입 기능 구현"

SMS, 이메일 중복확인 API 개발

Resolves: #123
Ref: #456
Related to: #48, #45

7. Commit Message Emogji

아래는 자주 쓰이는 대표적인 몇가지 일부만 정리를 하였다.
자세한 부분에 대해서는 'Gitmoji 사용하기' 여기 설명이 잘되어 있는 글이 있어, 이 링크를 참조 부탁한다.

EmogiDescription
🎨코드의 형식 / 구조를 개선 할 때
📰새 파일을 만들 때
📝사소한 코드 또는 언어를 변경할 때
🐎성능을 향상시킬 때
📚문서를 쓸 때
🐛 버그 reporting할 때, @FIXME 주석 태그 삽입
🚑버그를 고칠 때
🔥코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께
🚜파일 구조를 변경할 때 . 🎨과 함께 사용
🔨코드를 리팩토링 할 때
💄UI / style 개선시
♿️접근성을 향상시킬 때
🚧WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용
💎New Release
🔖버전 태그
새로운 기능을 소개 할 때
⚡️도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용
💡새로운 아이디어, @IDEA주석 태그
🚀배포 / 개발 작업 과 관련된 모든 것

마치며

위와 같이 이제까지 커밋을 하면서 단순히 뭘 했는지에 대해서만 간략하게 작성했다.
혼자 헤쳐나가고, 혼자 모든것을 다 도맡아 하다보니 본인만 알아보기 쉽게 나름 규칙을 생각해서 작성했었다.
그러나 이런 사소한 커밋 메시지도 나만 알아보는 것이 아닌, 누군가 보았을때 일관성과 규칙이 있어야 알아보기 쉽다는 것을 알았기에 규칙과 일관성을 재정립하고자 했다.

이렇게 협업하는 사람들 간의 커밋 메시지 스타일을 정해두면 서로 간의 코드 리뷰에 도움이 될 뿐 아니라, 자신의 이전 로그를 살펴보는 것에도 도움이 되는 것을 알아, 유다씨티의 깃 커밋 스타일 가이드를 바탕으로 커밋 컨벤션을 정리해보았다.

[협업] 협업을 위한 git 커밋컨벤션 설정하기
Git - 커밋 메시지 컨벤션

profile
생각하는대로 살지 않으면, 사는대로 생각하게 된다.

3개의 댓글

comment-user-thumbnail
2022년 8월 11일

커밋 컨벤션을 잘 따르지않고 사용했었는데 반성합니다..

답글 달기
comment-user-thumbnail
2023년 1월 1일

잘 보고 갑니다! 많은 도움 되었습니다!!

답글 달기
comment-user-thumbnail
2023년 8월 11일

감사합니다.. ㅠㅠ

답글 달기