[Git] Git 커밋 메시지를 효율적으로 쓰는 법: 커밋 메시지 컨벤션
Fix: 로그인 버그 해결 #123
- 사용자 로그인 시 발생하는 버그 수정
- 로그인 페이지에서 입력 필드의 유효성을 검사하는 로직 추가
- 버그를 해결하여 사용자 인증 과정이 원활하게 동작
Closes #120
커밋 메시지가 중요한 이유
- 코드 리뷰 시간을 단축하고 효율적으로 처리하기 위해.
- 변경 사항을 이해하는 데 도움을 주기 위해.
- "왜 이렇게 했을까?"와 같은 코드만으론 설명하기 어려운 부분을 설명하기 위해.
- 추후 작업자가 변경 사항의 이유와 방식을 이해하고 문제 해결과 디버깅을 용이하게 하기 위해.
커밋 메시지 구조
<type>[scope]: <subject> -- 헤더, 필수
<body> -- 본문
<footer> -- 바닥글
type
필수. 변경사항의 유형
- Build: 빌드 관련 수정
- Chore: 패키지 매니저 수정, 그 외 기타 수정 예시) .gitignore
- Ci: CI 관련 설정 수정
- Docs: 문서(주석) 수정
- Feat: 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정
- Fix: 디버그
- Refactor: 코드 리팩터링
- Release: 버전 릴리즈
- Style: 코드 스타일, 포맷팅 수정
- Test: 테스트 코드 추가/수정
scope
선택. 변경된 위치 표시
subject
필수. 아래에 있는 작성 원칙에 따라 써야함.
body
선택. 제목만으로는 표현할 수 없는 자세한 설명
footer
선택. 작업과 관련된 이슈 번호, 참조 링크
Git 커밋 메시지 작성의 원칙
- 제목과 본문은 빈 행으로 구분하라
- 제목은 최대 50글자로 제한하라.
- 제목의 첫 글자는 대문자로 작성하라. (영어)
- 제목의 끝에는 마침표를 넣지 마라.
- 제목은 명령문으로 작성하라. 과거형을 사용하지 마라.
- 본문의 각 줄은 최대 72글자로 제한하라.
- 설명할 때 "어떻게"보다는 "무엇을"하고 "왜"에 집중하라.
- 설명할 때 소스코드를 보지 않고도 변경 사항이 무엇을 하는지 알 수 있도록 하라
- 뭉뚱그리지말고, 맥락을 알 수 있게 작성하라.
- 한 가지 언어만 사용하라
제목과 본문은 빈 행으로 구분하라
Fix: 로그인 버그 해결 #123
- 사용자 로그인 시 발생하는 버그 수정
- 로그인 페이지에서 입력 필드의 유효성을 검사하는 로직 추가
- 버그를 해결하여 사용자 인증 과정이 원활하게 동작
Closes #120
제목은 명령문으로 작성하라. 과거형을 사용하지 마라
# 좋은 예시
InventoryBackendPool을 사용하여 재고 백엔드를 검색합니다
---
Use InventoryBackendPool to retrieve inventory backend
# 나쁜 예시
InventoryBackendPool을 사용하여 재고 백엔드를 검색했습니다
---
Used InventoryBackendPool to retrieve inventory backend
왜 명령형을 써야 할까?
커밋 메시지는 변경된 내용 자체가 아니라, 변경 사항이 코드에 어떤 영향을 미치는지를 설명해야하기 때문이다.
즉 변경 사항이 실제로 무엇을 하는지를 설명해야한다.
>>> 잘 이해가 안 가는데, 누가 설명좀
설명할 때 "어떻게"보다는 "무엇을"하고 "왜"에 집중하라.
# 좋은 예시
InventoryBackend 자식 클래스의 메소드 이름 수정
InventoryBackend를 상속받는 클래스가 기반 클래스의 인터페이스를 따르지 않음.
Cart가 잘못된 방식으로 백엔드 구현을 호출하고 있었기 때문에 문제가 없었음.
---
Fix method name of InventoryBackend child classes
Classes derived from InventoryBackend were not
respecting the base class interface.
It worked because the cart was calling the backend implementation
incorrectly.
설명할 때 소스코드를 보지 않고도 변경 사항이 무엇을 하는지 알 수 있도록 하라
# 좋은 예시
Credit 모델에 `use` 메소드 추가
---
Add `use` method to Credit model
# 나쁜 예시
`use` 메소드 추가
---
Add `use` method
# 좋은 예시
텍스트 상자와 레이아웃 프레임 사이 왼쪽 간격 늘림
---
Increase left padding between textbox and layout frame
# 나쁜 예시
CSS 조정
---
Adjust css
뭉뚱그리지말고 맥락을 알 수 있게 작성하라
# 나쁜 예시
이거 고침
뭔가 고침
이제 잘 작동할거임
뭔가 변경함
CSS 조정
---
Fix this
Fix stuff
It should work now
Change stuff
Adjust css
많은 사람이 이렇게 커밋 메시지를 작성할 것이다. 반성하자. 일단 나부터 ㅋㅋ
한 가지 언어만 사용하라
# 좋음
ababab Add `use` method to Credit model
efefef Use InventoryBackendPool to retrieve inventory backend
bebebe Fix method name of InventoryBackend child classes
# 좋음 (한국어 예시)
ababab Credit 모델에 `use` 메소드 추가
efefef InventoryBackendPool을 사용하여 재고 백엔드를 검색합니다
bebebe InventoryBackend 자식 클래스의 메소드 이름 수정
# 나쁨 (영어와 한국어 혼용)
ababab Credit 모델에 `use` 메소드 추가
efefef Use InventoryBackendPool to retrieve inventory backend
cdcdcd 이제 잘 작동할거임
프로젝트 소유자인 경우:
모든 커밋을 한 가지 언어를 사용해서 작성해야함.
코드 주석과 기본 언어 파일 (다국어 지원 프로젝트의 경우) 등 모두 같은 언어이어야 함.
기여자의 경우:
커밋 히스토리에서 사용되고 있는 언어를 사용하여 커밋 메시지를 작성해야함.
출처:
How to Write a Git Commit Message
Commit messages matter. Here's how to write them well.
cbea.ms
https://github.com/RomuloOliveira/commit-messages-guide/blob/master/README_ko-KR.md
GitHub - RomuloOliveira/commit-messages-guide: A guide to understand the importance of commit messages and how to write them wel
A guide to understand the importance of commit messages and how to write them well - GitHub - RomuloOliveira/commit-messages-guide: A guide to understand the importance of commit messages and how t...
github.com
https://yozm.wishket.com/magazine/detail/1974/
Git 커밋 메시지 컨벤션은 왜 중요할까? | 요즘IT
Git 커밋 메시지는 코드 변경 사항을 요약하여 전달하는 역할을 합니다. 만약 개발자들이 서로 다른 방식으로 커밋 메시지를 작성하면 메시지의 가독성이 떨어지고, 문제 발생 시 이력을 추적하
yozm.wishket.com