자소서, 면접 준비 과정에서 이전에 개발했던 프로젝트를 되돌아 볼 때, '커밋 메시지를 왜 이렇게 작성했지...', '이건 뭘 개발한거지...' 라고 느끼는 부분이 많았다.
그 때 당시에는 내가 구현/수정한 내용을 충분히 다 담아서 커밋 메시지를 작성했다고 생각했지만, 나중에 시간이 지나고(지금ㅋ) 나서 보니 아니었다는 것을 깨달았다... 😭
또한, 나 혼자 개발한 프로젝트 말고, 팀 프로젝트할 때는 왜 컨벤션을 정하지 않았던 걸까?라는 생각도 들었다.
➡️ 지금 생각해보면 그 이유는 팀원들이 각자 원하는 방식으로 커밋 메시지를 작성해도 이해할 만한 수준의 작은 프로젝트 였기 때문이었던 것 같다.
🥵 그리고,, 커밋 컨벤션도 정하지 않을 만큼 팀원 모두가 개발 문화를 잘 몰랐던 것 같기도 하다.
앞으로 취업해서 다른 팀원들과 일 할때에는 커밋 컨벤션을 지켜야하기 때문에 깃 커밋 컨벤션을 정리해보자-! 라는 다짐을 하였다.
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
subject를 영어로 작성할 경우, 아래와 같은 동사원형 사용
Add
: 추가Remove
: 삭제Simplify
: 단순화Update
: 보완Implement
: 구현Prevent
: 방지Move
: 이동Rename
: 이름 변경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