좋은 Git Commit Message란 무엇일까?
git은 동료들과 함께 협업하기 위한 버전형상관리 도구이다. 즉, 직관적이면서도 가독성이 좋아야 협업의 효율성이 올라가고 유지보수도 편해진다.
Ailbaba Fusion commit
NHN tui.calendar commit
위 사진은 Alibaba Fusion의 Next 레포지토리와 NHN의 tui.calendar 레포지토리에서 가져온 커밋 히스토리이다.
두 커밋의 히스토리가 상당히 유사하다.
사람들이 협업하기에 좋은 메세지의 유형이 어느정도 존재한다는 것이다.
그렇다면 사람들이 추구하는 일반적인 규칙을 알아보자.
- 제목과 본문을 빈 행으로 구분하기
- 제목은 영문 기준 50글자 이내로 작성
- 첫 글자는 대문자로 작성
- 제목 끝에 마침표 금지
- 제목은 명령문으로 사용하고 과거형 금지
- 본문의 각 행은 영문 기준 72글자 이하로 하고 줄 바꾸기
- 어떻게 보다는 무엇과 왜에 초점을 맞춰 작성
- 검토자의 이해도를 가정하지 말고 최대한 설명 제공
- 팀의 규칙을 따르자
#
# Commit Message 기본 구조
#
<type>(<scope>): <subject>
<body>
(<footer>)
선택사항이며, 변경된 부분을 직접적으로 표기합니다.
EX) 함수가 변경되었으면 함수명, 메소드가 추가되었으면 클래스명 기입 등
첫 글자는 대문자로 입력한다.
마지막에는 .(period)을 찍지 않는다.
특수기호를 사용하지 않는다.
영문 기준 최대 50자를 넘지 않는다.
제목은 명령문의 형태로 작성한다. (동사원형 사용)
Fixed -> Fix
Added -> Add
각 줄은 최대 72자를 넘지 않도록 한다.
어떻게 변경했는지보다, 무엇을 변경했고, 왜 변경했는지를 설명한다.
꼬릿말은 다음의 규칙을 지킨다.
꼬리말은 optional이고 이슈 트래커 ID를 작성한다.
꼬리말은 "유형: #이슈 번호" 형식으로 사용한다.
여러 개의 이슈 번호를 적을 때는 쉼표(,)로 구분한다.
이슈 트래커 유형은 다음 중 하나를 사용한다.
대부분 가장 많이 사용하는 것은 feat와 fix입니다. style, design처럼 로직적인 변화가 없을 경우에 커밋 메세지에 명시해주는 것만으로도 추후 오류를 찾을 때 많은 도움이 됩니다.
타입 뒤에 변경된 함수나 메소드를 직접적으로 명시하기도 합니다.
ex) fix(tab): ...
feat: Add dark mode toggle feature
Implemented a dark mode toggle on the settings page. Users can now switch between light and dark themes, which is saved in their profile settings.
fix: Correct issue with data fetching on mobile
Fixed a bug where data was not being fetched properly on mobile devices due to a wrong user-agent check. Updated the user-agent detection logic.
Closes #123
refactor: Simplify form validation logic
Refactored the form validation module to reduce code duplication and improve readability. Merged similar validation functions into a single utility.
feat: Add support for user avatars
Users can now upload and display avatars on their profiles.
Added image upload handling and a new API endpoint to serve the images.BREAKING CHANGE: The user profile model has been updated to include a new 'avatar_url' field. This change may affect existing profile data.
Fixes #456
Feat: "회원 가입 기능 구현"
SMS, 이메일 중복확인 API 개발
Resolves: #123
Ref: #456
Related to: #48, #45
아래는 자주 쓰이는 대표적인 몇가지 일부만 정리
Emogi Description
🎨 코드의 형식 / 구조를 개선 할 때
📰 새 파일을 만들 때
📝 사소한 코드 또는 언어를 변경할 때
🐎 성능을 향상시킬 때
📚 문서를 쓸 때
🐛 버그 reporting할 때, @FIXME 주석 태그 삽입
🚑 버그를 고칠 때
🔥 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께
🚜 파일 구조를 변경할 때 . 🎨과 함께 사용
🔨 코드를 리팩토링 할 때
💄 UI / style 개선시
♿️ 접근성을 향상시킬 때
🚧 WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용
💎 New Release
🔖 버전 태그
✨ 새로운 기능을 소개 할 때
⚡️ 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용
💡 새로운 아이디어, @IDEA주석 태그
🚀 배포 / 개발 작업 과 관련된 모든 것
https://treasurebear.tistory.com/70 을 참고하자.
git commit -m "title
body
footer"
결과)
title
body
footer
-m 태그마다 paragraphs를 생성하므로 blank line이 생긴다.
git commit -m "title" -m "body" -m "footer"
결과)
title
body
footer
참고
https://jane-aeiou.tistory.com/93
https://meetup.nhncloud.com/posts/106