제목(header)과 본문(body)을 빈행으로 분리
•
커밋 유형 이후 제목과 본문은 한글로 작성하여 내용이 잘 전달될 수 있도록 할 것
•
본문에는 변경한 내용과 이유 설명
•
어떻게보다는 무엇(What) & 왜(Why)를 설명
한 커밋에는 한 가지 문제만!
•
추적 가능하게 유지해주기
•
너무 많은 문제를 한 커밋에 담으면 추적하기 어렵다.
Commit 기본 구조
<type><is breakchange(!)>: <subject> // 제목
<BLANK LINE> // 구분줄\n
<body> // 내용
Plain Text
복사
제목(header)
<type><is breakchange(!)>: <subject> // 제목
Plain Text
복사
커밋 유형: <type>
커밋 유형 | 의미 |
Feat | 새로운 기능 추가 |
Fix | 버그 수정 |
Docs | 문서 수정 |
Style | 코드 formatting, 세미콜론 누락, 코드 자체의 변경이 없는 경우 |
Refactor | 코드 리팩토링 |
Test | 테스트 코드, 리팩토링 테스트 코드 추가 |
Chore | 관리(maintain), 핵심 내용은 아닌 잡일 등
패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore |
Design | CSS 등 사용자 UI 디자인 변경 |
Comment | 필요한 주석 추가 및 변경 |
Rename | 파일 또는 폴더 명을 수정하거나 옮기는 작업만인 경우 |
Remove | 파일을 삭제하는 작업만 수행한 경우 |
!BREAKING CHANGE | 커다란 API 변경의 경우 |
!HOTFIX | 급하게 치명적인 버그를 고쳐야 하는 경우 |
브레이크 체인지 여부: <is breakchange>
기존 개발하는 방식에 비해 많이 변경된 경우를 알리기 위한 표시.
또한, 브레이크 체인지가 존재하는 경우 변경내용에 대한 설명을 body에 작성
•
type뒤에 ‘!’ 추가
•
예시
◦
feat!: 랭킹 점수 계산 공식 변경
feat!: 랭킹 점수 계산 공식 변경
원래 해당 계산식을 사용했었지만
이런 공식으로 코드가 수정되었습니다.
Plain Text
복사
◦
feat: 로그인 기능 구현
제목 내용: <subject>
•
명령조로 작성
•
현재 시제 사용
•
끝에 . 없이 작성
바디: <body>
•
커밋에 대한 동기와 이전 코드와의 대조를 설명
•
여러가지 항목이 있다면 글머리 기호( - )를 통해 가독성 높이기
•
현재 시제 사용
•
기본은 선택 사항
•
브레이크 포인트가 존재하는 경우, 반드시 변경 사항의 설명을 body에 명시할 것
예제
feat: 경매품 업로드 기능 구현
Plain Text
복사
feat!: 랭킹 점수 계산식 변경
기존 계산식은 기여 `횟수 * 영상 시간(분)`이었지만, 기획 변경으로 인해 `횟수 * 영상 시간(초)`로 변경되었습니다.
이슈 사항 : https://github.com/pseudo-group/pseudo-company/server/issues/1
Plain Text
복사
CLI에서 커밋 메시지 여러 줄로 작성하는 방법
쌍따옴표를 닫지 말고 개행하며 작성 → 다 작성한 후에 쌍따옴표를 닫으면 작성 완료
git commit -m "FEAT: 회원가입 기능 추가
- 회원가입 기능 추가"
Bash
복사
규칙에 맞는 좋은 커밋메시지를 작성해야 하는 이유
•
팀원과의 소통
•
편리하게 과거 추적 가능
•
나중에 실무에서 익숙해지기 위해
안지킨 사례
지킨 사례
이슈(Issue)
•
담당자(Assignees)를 명시 할 것
•
Task list 기능을 적극 활용할 것
•
기능에 관련된 Issue라면 Github Project와 PR(PullRequest)과 연동하여 진행상황을 공유할 것
Pull Request
•
제목은 '[기능 | 기능 번호] 변경 사항' 구조로 작성할 것
•
Issue와 연동할 것
•
예시
Git Wiki
•
소개 : 서비스에 대한 소개
•
기능 : 서비스에 존재하는 기능
•
사용자 매뉴얼 : 사용자가 서비스를 이용할 때 참고할 매뉴얼
•
개발자 매뉴얼 : 개발자가 프로젝트에 참여할 때 참고할 매뉴얼
•
프로젝트에 참여하기 : 프로젝트에 참여하는 방법
•
Contributor : 현재의 contributor