좋은 git Commit Message 작성 가이드라인
평소 커밋 메세지를 어떻게 작성해야하나 항상 고민이였는데 찾아보다가 깔끔한 가이드라인이 있어 공유해보고자 한다.😀
기존 커밋은 "작성파일-코드 작성내용" 으로만 작성을 해왔다. 개인 기록용이라면 이정도로도 충분하지만, 여러 사람이 협업을 하게되면 보다 명확한 가이드라인이 필요할것이다.
위 사진은 Alibaba Fusion의 Next 레포지토리와 NHN의 tui.calendar 레포지토리에서 가져온 커밋 히스토리인데 두 커밋 히스토리가 유사한 형태를 띄고 있는 것을 보실 수 있다.
가장 많이들 사용하는 좋은 커밋 메세지를 작성하기 위한 방법을 알아보자면, 아래와 같이 작성을 한다.
기본 규칙
- 명확하고 간결한 제목 작성:
커밋 메시지의 첫 줄에는 명확하고 간결한 제목을 작성하는 것이 좋다. 이는 커밋 내용의 간략한 요약으로, 영문 기준 50자 이내로 작성하는 것이 좋다.
- 본문 작성:
커밋 제목 아래에는 커밋의 상세 내용을 설명하는 본문을 작성할 수 있다. 이때, 한 줄 당 72자 이내로 작성하며, 변경 사항에 대한 자세한 내용을 포함할 수 있다.
- 명령어 시제 사용:
커밋 메시지에 사용되는 동사는 명령어 시제를 사용하는 것이 좋다. 예를 들어, "Add feature"나 "Fix bug"와 같이 구체적으로 작성하는 것이 좋고 과거형으로 작성은 지양한다.
- 관련 이슈 번호 포함:
만약 해당 커밋이 어떤 이슈나 이슈들과 연관되어 있다면, 커밋 메시지에 이슈 번호를 포함하는 것이 좋다. 이를 통해 어떤 이슈와 연관된 커밋인지 쉽게 파악할 수 있다.
- 올바른 작성자 정보 포함: 커밋 메시지에는 올바른 작성자 정보를 포함하는 것이 좋다. 이는 보통 git 설정에서 설정할 수 있으며, 작성자 정보가 올바르지 않으면 다른 개발자들이 커밋의 출처를 파악하는 것이 어렵다.
Commit Message 구조
type(타입) : title(제목)
body(본문, 생략 가능)
Resolves : #issueNo, ...(해결한 이슈 , 생략 가능)
See also : #issueNo, ...(참고 이슈, 생략 가능)
커밋 예시) 타입 : 본문내용 (#이슈)
fix(Card): fix css style naming,close #3930 (#4237)
feat: use big.js instead of bignumber.js, for smaller bundle size (#3946)
fix(Tab): config active line padding
feat(Transfer): transfer support different search config between pane…
Type 키워드
Type 키워드 |
사용 시점 |
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 수정 |
style |
코드 스타일 변경 (코드 포매팅, 세미콜론 누락 등) 기능 수정이 없는 경우 |
design |
사용자 UI 디자인 변경 (CSS 등) |
test |
테스트 코드, 리팩토링 테스트 코드 추가 |
refactor |
코드 리팩토링 |
build |
빌드 파일 수정 |
ci |
CI 설정 파일 수정 |
perf |
성능 개선 |
chore |
빌드 업무 수정, 패키지 매니저 수정 (gitignore 수정 등), 설정을 변경(코드의 수정 없이) |
rename |
파일 혹은 폴더명을 수정만 한 경우 |
remove |
파일을 삭제만 한 경우 |
대부분 가장 많이 사용하는 것은 feat와 fix이다. style, design처럼 로직적인 변화가 없을 경우에 커밋 메세지에 명시해주는 것만으로도 추후 오류를 찾을 때 많은 도움이 된다.
타입 뒤에 변경된 함수나 메소드를 직접적으로 명시하기도 한다. ex) fix(tab): ...
관련 이슈(옵션)
사용 시점 |
사용 키워드 |
해결 |
Closes(종료), Fixes(수정), Resolves(해결) |
참고 |
Ref(참고), Related to(관련), See also(참고) |
관련 이슈 언급은 선택사항이다. 사용 키워드는 위와같이 다양하며, 팀에서 지정한 키워드를 사용한다.
위에서 내용을 참고해서 커밋을 작성하도록 노력하는 모습..
참고
[Git] 깃 커밋 메시지 작성법(git commit message)
느낌 있는 Commit Message 작성하기
Git Commit Message 규칙