우리가 쓰는 커밋 컨벤션, Angular에서 왔어요.
우리가 자주 쓰는 feat, fix, chore 같은 커밋 메시지 타입,
사실은 Angular 팀에서 만든 커밋 메시지 작성 규칙이에요.
2012년경 AngularJS 프로젝트에서 커밋 메시지 품질을 높이기 위해 이 컨벤션이 도입되었고, 이후 많은 오픈소스와 실무 프로젝트에서 사실상 표준처럼 사용되고 있어요.
또한 이 규칙은 semantic-release 같은 자동 버전 관리 도구와도 잘 맞아요.
예를 들어 커밋 메시지에 따라 다음과 같은 자동 릴리즈 흐름이 가능하죠:
feat: → minor 버전 증가fix: → patch 버전 증가BREAKING CHANGE: → major 버전 증가맞아요. WIP:는 Angular 커밋 컨벤션에 공식적으로 포함되어 있진 않아요.
하지만 중간 저장이나 초안 작업 상태를 나타내기 위해 사용된다고 해요.
그래서 저는 Angular 커밋 컨벤션을 기반으로 하되, WIP (Work In Progress) 커밋 메시지를 관용적으로 추가해서 사용하고 있어요.
정리해둔 내용은 아래에서 볼 수 있으니, 팀 커밋 컨벤션 문서가 필요하다면 참고해보세요.
<BLANK LINE>은 각 구조를 구분짓기 위한 빈 행입니다.
제목 한 줄 + 본문(설명) + 푸터 형태로 작성합니다.
커밋 내용의 배경, 맥락, 해결 방식 등을 자세히 설명할 수 있습니다.
<type>([optional scope]): <subject>
<BLANK LINE>
[optional body]
<BLANK LINE>
[optional footer(s)]
git commit 입력 후 Vim 에디터에서 i를 눌러 멀티라인 커밋 메시지 작성<BLANK LINE>은 각 구조를 구분짓기 위한 빈 행제목만 있는 간단한 메시지로 로그 뷰어의 기본 형태입니다.
변경 내용이 단순하거나 설명이 필요 없는 경우 사용합니다.
git commit -m "<type>(<scope>): <subject> [optional footer(s)]"
<type><scope>커밋 변경 위치를 지정하는 모든 것이 될 수 있습니다.
함수가 변경되었으면 함수 이름, 메소드가 추가되었으면 class 이름등 영향받는 영역을 표기합니다.
feat(auth): 소셜 로그인 기능 추가
fix(ui): 버튼 색상이 테마와 다르게 표시되던 문제 수정
refactor(api): 유저 목록 API 호출 방식 변경
<subject>type 이기 때문, 고유명사 제외).) 사용 금지[optional body]subject 와 다르게 첫 시작이기 때문에)[optional footer(s)],)로 구분하여 기록 (Closes #123, #245, #992)| 키워드 | 용도 |
|---|---|
Closes: 또는 Fixes: | 특정 이슈가 마무리 되었을 때 |
Refs: 또는 Related-to: | 관련된 이슈를 참조할 때 |
BREAKING CHANGE: | 하위 호환이 깨지는 변경사항 표시 (semantic-release와 연동되어 major 버전 자동 증가) |
Co-authored-by: | 공동 커밋자 정보 기입 (여러 명이 작업한 커밋 표시) |
Reviewed-by: | 코드 리뷰어 명시 |
Signed-off-by: | 서명(서약)을 명시할 때, 보통 오픈소스 컨트리뷰션 시 사용 |
Reverts: | 특정 커밋을 되돌릴 때 사용 (Reverts commitHash) |
feat: 로그인 시 remember me 기능 추가 #74
fix(api): POST 요청 헤더 누락 문제 수정
feat(auth): 로그인 시 remember me 기능 추가
로그인 시 사용자가 '기억하기' 옵션을 선택하면 로컬 스토리지에 토큰을 저장하도록 기능을 추가합니다.
이로 인해 브라우저를 종료해도 사용자가 로그인 상태를 유지할 수 있게 됩니다.
BREAKING CHANGE: 로그인 API 응답 구조가 변경되었습니다. 토큰 외에 expires 항목이 추가되었으므로, 관련 파싱 로직을 수정해야 합니다.
Closes: #123
Related-to: #95
Co-authored-by: 홍길동 <hong@example.com>
Reverts: a3c0b9d2ee14b0b3cdbf03c6cf93a12e34a1d9b9
작업을 시작했지만 아직 완성되지 않은 기능을 개발 중일 때, 중간 저장을 위해 WIP:(Work In Progress) 커밋 메시지를 사용할 수 있습니다.
git commit -m "WIP: 사용자 프로필 페이지 개발 중"
GitHub에서 PR을 생성할 때 'Create draft pull request'를 선택하면, 리뷰어에게 "아직 작업 중인 PR입니다"라는 의도를 분명히 전달할 수 있어요.
WIP 커밋과 Draft PR을 함께 사용하면, 작업 중인 기능도 팀과 안심하고 공유할 수 있어요.