본문 바로가기
STUDY

[Git] Commit Message Convention

by HR_J 2024. 4. 29.

지난주 제출한 계산기 과제를 기반으로 피드백을 2가지 받았다. 2가지 피드백은 전부 git을 통한 협업과 관련된 피드백이었는데, 사실 제출하고 나서 git convention 등에 대한 설명을 들어서 이런 피드백이 올 것이라곤 예상했었다!

이 기회를 살려 앞으로 어떤식으로 작성해볼지에 대해 공부하고 정의하는 시간을 가질 수 있을 것 같다.

 

1. 깃 커밋 컨벤션, 왜 사용할까?

커밋 컨벤션을 지정해서 사용하는 이유는 다양하지만, 크게 2가지를 꼽자면 아래의 2개라고 생각한다.

1. 가독성 및 커뮤니케이션 효율성 제고

일관된 형태의 커밋 메시지는 가독성이 높다. 그렇기 때문에 다른 개발자의 작업 내역 및 변경 사항들을 쉽게 파악가능하다. 

2. 변경 이력 추적 및 문제 해결 속도 향상

일관된 커밋 메시지를 통해 소스 변경 이력을 효율적으로 추적할 수 있다. 이를 통해 문제 발생시 보다 빠르게 원인을 찾아 해결할 수 있다. -> 전반적인 프로젝트 안전성을 높일 수 있다.

 

2. 작성 요령

기본적인 커밋 메시지 구조

<타입>[적용 범위(선택 사항)]: <설명>

[본문(선택 사항)]

[꼬리말(선택 사항)]

 

설명은 title 전체 기준 50자 이내로 작성한다.

간결하고 요점적으로 작성하는것이 포인트다.

→ 개조식( 글을 쓸 때 짧게 끊어서 중요한 요점이나 단어를 나열하는 방식)구문으로 작성한다.

 

예시

<type>  <설명>
♻️[Refactor] 숫자 입력 간결화

 

3. Type

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 관련  수정사항
  • style: 서식 지정, 세미콜론 누락 등 (코드 상의 변경은 없다.)
  • refactor: 코드 리팩토링(Production code)
  • test: 테스트 추가, 테스트 코드 리팩토링 등 테스트와 관련된 것 ( Production code는 변경 없다.)
  • chore: 빌드 작업, 패키지관리자 구성 등 위의 사항들을 제외한 중요도가 낮은 기능들.

 

4. GitEmoji😀

깃 이모지에서 제공하는 이모지들. 사이트에 들어가면 원하는 아이콘을 쉽게 사용할 수 있다.

그들 중 주요 사용되는 기능들만 표로 가져와 봤다.

이모지 설명
🎨 코드의 형식 / 구조를 개선 할 때
📰 새 파일을 만들 때
📝 사소한 코드 또는 언어를 변경할 때
🐎 성능을 향상시킬 때
📚 문서를 쓸 때
🐛 버그 reporting할 때, @FIXME 주석 태그 삽입
🚑 버그를 고칠 때
🔥 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께
🚜 파일 구조를 변경할 때 . 🎨과 함께 사용
🔨 코드를 리팩토링 할 때
☔️ 테스트를 추가 할 때
💚 CI 빌드를 고칠 때
🔒 보안을 다룰 때
💄 UI / style 개선시
새로운 기능을 소개 할 때
🚀 배포 / 개발 작업 과 관련된 모든 것

 

5. 쓰기로 결정한 주요 기능

Tag Emoji Description
Feat 새로운 기능 추가
Fix 🐛 버그 수정
!HOTFIX 🚑️ 급하게 치명적인 버그를 고쳐야하는경우
Docs 📝 문서 수정
Style 💄 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
Refactor ♻️ 프로덕션 코드 리팩토링
Test 테스트 추가, 테스트 리팩토링(프로덕션 코드 X)
Merge 🔀 브랜치를 머지한다
Remove 🔥 파일을 삭제하는 작업만 수행한 경우
Rename 🚚 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
gitignore 🙈 깃이그노어 파일 관리

 

깃 컨벤션을 참고해서 작성한 프로젝트 : https://github.com/DEVxMOON/Bulls-and-Cows

페이지에 들어가서 Commit 이력을 확인해보면 된다.

해당 프로젝트에 대한 자세한 설명은 내일 업로드 할 예정이다.

 

한가지 꼭 기억해야할 점이 있다면... 언제나 커밋하기전 pull 받는 것을 생활화 하자..!

 

 

참고

더보기

'STUDY' 카테고리의 다른 글

[Git] .gitignore 사용법  (0) 2024.04.23