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
본문은 다음의 규칙을 지킨다.
5. footer
꼬릿말은 다음의 규칙을 지킨다.
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 사용하기' 여기 설명이 잘되어 있는 글이 있어, 이 링크를 참조 부탁한다.
Emogi | Description |
---|---|
🎨 | 코드의 형식 / 구조를 개선 할 때 |
📰 | 새 파일을 만들 때 |
📝 | 사소한 코드 또는 언어를 변경할 때 |
🐎 | 성능을 향상시킬 때 |
📚 | 문서를 쓸 때 |
🐛 | 버그 reporting할 때, @FIXME 주석 태그 삽입 |
🚑 | 버그를 고칠 때 |
🔥 | 코드 또는 파일 제거할 때 , @CHANGED주석 태그와 함께 |
🚜 | 파일 구조를 변경할 때 . 🎨과 함께 사용 |
🔨 | 코드를 리팩토링 할 때 |
💄 | UI / style 개선시 |
♿️ | 접근성을 향상시킬 때 |
🚧 | WIP (진행중인 작업)에 커밋, @REVIEW주석 태그와 함께 사용 |
💎 | New Release |
🔖 | 버전 태그 |
✨ | 새로운 기능을 소개 할 때 |
⚡️ | 도입 할 때 이전 버전과 호환되지 않는 특징, @CHANGED주석 태그 사용 |
💡 | 새로운 아이디어, @IDEA주석 태그 |
🚀 | 배포 / 개발 작업 과 관련된 모든 것 |
마치며
위와 같이 이제까지 커밋을 하면서 단순히 뭘 했는지에 대해서만 간략하게 작성했다.
혼자 헤쳐나가고, 혼자 모든것을 다 도맡아 하다보니 본인만 알아보기 쉽게 나름 규칙을 생각해서 작성했었다.
그러나 이런 사소한 커밋 메시지도 나만 알아보는 것이 아닌, 누군가 보았을때 일관성과 규칙이 있어야 알아보기 쉽다는 것을 알았기에 규칙과 일관성을 재정립하고자 했다.
이렇게 협업하는 사람들 간의 커밋 메시지 스타일을 정해두면 서로 간의 코드 리뷰에 도움이 될 뿐 아니라, 자신의 이전 로그를 살펴보는 것에도 도움이 되는 것을 알아, 유다씨티의 깃 커밋 스타일 가이드를 바탕으로 커밋 컨벤션을 정리해보았다.
커밋 컨벤션을 잘 따르지않고 사용했었는데 반성합니다..