Git Commit Convention

김정환·2024년 10월 4일
0

Git Convention

깃을 사용하면서 commit을 할 때 메시지를 적을 수 있다.

근데 실제로 메시지를 작성해봤는데
혼자서 했던 거지만 메시지를 너무 이상하게 적는 경우가 많았다.

이런 부분은 협업할 때 큰 지장을 줄 수 있다.
누가 어떤 작업을 어떻게 했는지 알 수 없기 때문이다.
이런 일을 방지하고자 commit 시에 따라야할 양식이 있는데 그게 Git Commit Convention이다.

올바른 컨벤션

  1. 맡은 Task가 구체적으로 정리되어 있어야 한다.
  2. 개발 중 겪은 문제들이 Git Issue로 잘 정리되어 있어야 한다.
  3. 컨벤션을 제대로 이해했다면 원하는 정보가 어딨는지 알 수 있다.
  4. 읽는 환경에 상관없이 정보는 일관되어야 한다.

1. 구조

기본적인 구조는 다음과 같다.

type : subject // 제목

body // 본문, 선택사항

footer	// 꼬릿말, 선택사항

위처럼 세 파트로 나누고 각 파트는 빈줄로 구분한다.

1-1. Commit Type Rule

  • 타입은 태그 : 제목으로 구성된다.
    • 태그는 첫 글자는 대문자로 작성한다.
    • : 뒤에만 space가 있다.
타입 태그제목
Feat :새로운 기능
Fix :버그 수정
Docs :문서 수정
Style :코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
Refactor :코드 리팩토링
Test :테스트, 테스트 코드의 추가, 수정, 삭제, 비즈니스 로직에 변경이 없는 경우
Chore :위에 걸리지 않는 기타 변경사항, 잡일 (빌드 스크립트 수정, asset 이미지, 패키지 매니저 등)
Design :CSS 등 사용자 UI 디자인 변경
Comment :필요한 주석 추가 및 변경
Init :프로젝트 초기 생성
Rename :파일 혹은 폴더명 수정, 옮기는 경우
Remove :파일을 삭제하는 경우

1-2. Subject Rule

  • 최대 50글자가 넘지 않도록 하고 마침표 및 특수기호는 사용하지 않는다.
  • 영문 사용 시, 동사원형 사용하고, 첫 글자는 대문자로 표기한다. (과거형 x)
  • 제목은 개조식 구문으로 작성 => 완전한 서술형이 아닌, 간결하고 요점적인 서술
  • 영문 작성 시, 사용하는 동사원형들
Add : 추가
Remove : 삭제, 제거
Simplify : 단순화
Update : 보완
Implement : 구현
Prevent : 방지
Move : 이동
Rename : 이름 변경

1-3. 브레이크 체인지

is breakchange :
기존 개발하는 방식에 비해 많이 변경된 경우를 알리기 위한 표시.

브레이크 체인지가 존재하는 경우 변경내용에 대한 body를 작성해야한다.

Feat : Add Store
Feat! : Change trading system // 변경(change)되었으니 잠깐 멈춰서(break) 이 커밋을 읽어주세요.

기존 교환 방식인 정가 교환이 아닌 유저가 판매하는 아이템에는 90% 할인된 가격을 반영합니다.
이유는 ~~~~

1-4. Body Rule

  • 본문은 한 줄당 72자 내로 작성한다.
  • 본문 내용은 양에 구애받지 않고 최대한 상세히 작성한다.
  • 본문 내용은 어떻게 변경했는지 보다 '무엇을', '왜' 변경했는지를 설명한다.
  1. 다음 규칙을 지킨다.
    유형: #이슈 번호
  2. 이슈 트래커 ID를 작성한다.
  3. 여러 개의 이슈 번호는 ,(쉼표)로 구분한다.
  4. 이슈 트래커 유형은 아래와 같다.
    • Fixes: 이슈 수정중 (아직 해결되지 않은 경우)
    • Resolves: 이슈를 해결했을 경우
    • Ref: 참고할 이슈가 있을 때 사용
    • Related to: 해당 커밋에 관련된 이슈번호(아직 해결되지 않은 경우)

ex) Fixes: #45 Related to: #34, #23

Commit 예시

Feat : Add inventory, store

인벤토리 기능, 아이템 상점 기능 추가

Resolve: #1 (예시)

2. Git Branch 명명

  • 예시로 Git-Flow 전략 사용 시 명명 방법

종류

  • main
  • develop
  • feat/{기능명}
  • refactor/{기능명}
  • hotfix

ex)

  • main
  • dev
  • dev/feat/inventory

참고한 블로그들

https://puleugo.tistory.com/165
https://hyunjun.kr/21
https://chlolisher.tistory.com/173

감사합니다.

profile
사파 개발자

0개의 댓글