[Git] Git Commit명 규칙
어떤 것을 하는데 있어서 가장 어려운 것 중 하나가 이름 짓는 것입니다.
게임할 땐 아이디 짓는게 어렵고, 코딩할 땐 변수명 짓는 게 고민이죠.
깃을 사용하는데 있어서도 깃 커밋명을 짓는게 참 힘듭니다.
규칙없이 짓다보니 커밋명 생각하기도 힘들고, 처음에 잘 사용해보자고 생각하던 깃을 어느순간 그냥 add, commit, push로 몽땅 때려 넣게 되었습니다. 그로인해 깃은 엉망이 되고, 자괴감만 들더군요.
그래서 커밋명 작성하는 규칙을 정하면, 그 규칙에 맞춰서 이름을 작성하게 되고, 그러면 좀 더 깔끔하고 보기 좋으면서 사용이 쉬운 깃이 될 것 같아 공부해보았습니다.
우선적으로 커밋메세지의 구조를 정해보려합니다. 아래 형식은 유다시티라는 회사의 커밋메세지 스타일이라고 합니다.
1. Commit 메세지 작성 요령
타입(Type): 제목(Subject)
본문(Body)
꼬리말(Footer)
1.1. 타입
- Feat : 새로운 기능 추가
- Fix : 버그 수정
- Build : 빌드 관련 파일 수정
- Ci : CI관련 설정 수정
- Docs : 문서 (문서 추가, 수정, 삭제)
- Style : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없는 경우)
- Refactor : 코드 리팩토링
- Test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없는 경우)
- Chore : 기타 변경사항 (빌드 스크립트 수정 등)
코드를 작성하다보면 같은 기능을 다른 날 더 좋은 방식으로 고칠때가 있는데 이런 코드 수정은 Fix일까? Style일까?
Style은 개인의 수정이고, Refactor은 모두가 같이한 수정인가? 코드 형식이라는 말에서 헷갈린다.
각자 정해야 하겠지만, 개인적으로 첫번째 물음에서 코드 수정은 Fix가 좀 더 직관적인 것 같고, 두번째는 직관적이지는 않지만, 일단은 태도의 차이로 정해두려한다. 지나친 코드의 중복이나 우선적인 기능 구현으로 부채가 쌓여 리팩토링의 필요성이 느껴져서 하는 건 리팩토링, 나머지는 스타일로 작성하려고 한다. 이렇게 헷갈리는 것은 리팩토링에 대해 확실히 알지 못해서 그런게 아닐까 싶다.
1.2. 제목
- 제목은 50자를 넘기지 않고, 마침표를 붙이지 않음
- 제목에는 commit 타입을 함께 작성
- 과거 시제를 사용하지 않고 명령조로 작성
- 한글로 작성시 구문이 더 선호
- 제목과 본문은 한 줄 띄워 분리
- 제목의 첫 글자는 반드시 대문자로
- 제목이나 본문에 이슈 번호가 있다면 붙임
1.3. 본문
- 선택 사항. 없어도 무방
- 한 줄에 72자를 넘기면 안 됨
- 어떻게(How)보다 무엇을, 왜(What, Why)에 맞춰 작성
- 설명, 그리고 commit의 이유를 작성
- 선택 사항. 없어도 무방
- Issue tracker ID를 작성할 때 사용
- 해결: 이슈 해결 시 사용
- 관련: 해당 commit에 관련된 이슈 번호
- 참고: 참고할 이슈가 있는 경우 사용
영어가 최선이지만, 익숙해지기까지 한글로 하는 것도 어떤가 싶기도 하다. 팀원들 끼리 정하면 된다.
2. 이슈 자동 종료시는 법
키워드 #이슈번호
2.1. 키워드
- 일반 개발 이슈
- close
- closes
- closed
- 버그 수정, 핫픽스 수정 이슈
- fix
- fixes
- fixed
- 문의, 요정사항 이슈
- resolve
- resolves
- resolved
기능은 같고 위와 같이 나눠서 사용하면 좋다고 한다.
예시
기능추가: 얼굴인식 로그인 추가(#123)
사용자 요구사항으로 얼굴인식 로그인 추가
- FaceLogin.swift
해결: #123
참고: #456, #789
수정: 인증 메소드 수정
* CABVerification.java: 15번째 줄 인증 메소드의 인자를 현 정책에 맞게 고쳤다.
* JSONFormat.java: 이 커밋은 이 파일에 적절한 로깅 메소드를 추가한다.
* MainView.java: 약간의 리팩토링.
close #123 - Feat: 함수추가
함수를 추가하였습니다.
추가
한글로 규칙을 정하고 예시를 만든 사이트
Git 사용 규칙 - Git commit 메시지 (tistory.com)
참조
[Git] 규칙적인 Commit 메세지로 개발팀 협업하기👾 (tistory.com)
Github commit 메세지 규칙 - Junhyunny’s Devlogs
좋은 git 커밋 메시지를 작성하기 위한 7가지 약속 : NHN Cloud Meetup (toast.com)