현재 상황
뭐가 문제일까요?
여러분들은 깃을 add, commit, pull, push 정도의 명령어만 사용하지만, 정말 다양한 깃 명령어들이 존재합니다(진짜 정말 많음). 보통 리더 역할을 맡는 사람이 log를 확인하며 되돌리고 확인하는 상황들이 종종 발생하는데, 이 시점에서 커밋 메세지가 “pr”, “test”, “111” 이런 식으로 작성되어 있으면 진짜 행복합니다. 일일이 소스코드 내용을 까봐야하거든요. 그게 다 시간이고 비용인거죠.
커밋 메시지 작성 방법
1. 커밋 메시지의 일반적인 구조
헤더(Header), 본문(Body), 꼬리말(Footer)의 세 부분으로 구성됩니다.
<Type>(<Scope>): <Subject> // 헤더
<BLANK LINE> // 제목과 본문은 한 줄 띄움
<Body> // 본문 (선택 사항)
<BLANK LINE> // 본문과 꼬리말은 한 줄 띄움
<Footer> // 꼬리말 (선택 사항)
Markdown
복사
네트워크 통신 내용이랑 비슷하죠?
1) 헤더(Header) - 필수
커밋의 종류와 간단한 요약을 나타내며, 가장 중요합니다.
•
Type(타입) : 커밋의 성격을 나타냅니다
◦
feat, fix, docs 등등
•
Scope(범위) : 변경 사항이 영향을 미치는 범위와 모듈을 나타냅니다(선택 사항)
•
Subject(제목) : 변경 사항을 요약한 짧고 명확한 설명
2) 본문(Body) - 선택
변경 내용에 대한 상세 설명이 필요할 때 작성합니다. 무엇을 변경했고 왜 변경했는지에 초점을 맞춥니다. 어떻게 변경했는지는 코드(git diff)로 알 수 있으므로 굳이 설명할 필요는 없습니다
3) 꼬리말(Footer) - 선택
관련 이슈 트래커 정보, 해결된 이슈 정보 등의 메타데이터를 포함합니다
(예 : Closes : #123, Refs : #456)
2. 좋은 커밋 메시지를 위한 규칙 7가지
1.
제목과 본문을 빈 행으로 분리
Git 도구가 커밋을 해석하는 데 필수적
2.
제목은 (영문 기준) 50자 이내로 제한
간결하고 명확하게 요약하도록 강제 → 로그 가독성 높이기
3.
제목은 명령문(현재 시제)로 작성
Fix : Resolve unexpected error → O
Fixed unexpected error → X
4.
제목의 첫 글자는 대문자로 시작
일반적 관습
5.
제목 끝에 마침표(.) 사용 금지
6.
본문의 각 행은 (영문 기준) 72자 이내로 줄바꿈 처리
가독성 높이기 위함
7.
본문에는 “무엇”과 “왜”를 설명하고 “어떻게”는 피하기
어떻게는 git diff 명령어를 사용하면 확인 가능
3. 커밋 타입(Type) 활용
타입(Type) | 설명(Description) | 예시(Example) |
feat | 새로운 기능 추가 | feat: Add user authentication feature |
fix | 버그 수정 | fix(navbar): Resolve layout shift issue on mobile |
docs | 문서 (README, 주석 등) 수정/추가 | docs: Update installation guide in README |
style | 코드 포맷팅, 세미콜론, 공백 등 스타일 변경 (로직 변경 없음) | style: Apply auto-formatting to all files |
refactor | 버그 수정이나 기능 추가 없이 코드 리팩토링 | refactor(api): Simplify response handling logic |
perf | 성능 개선 (Performance) | perf: Optimize database query for faster response |
test | 테스트 코드 추가/수정 | test: Add unit tests for filter function |
chore | 빌드 시스템, 라이브러리 설치 등 보조 도구/라이브러리 변경 (운영 관련) | chore(deps): Update axios to version 1.6.4 |
build | 빌드 시스템, 외부 종속성 (예: npm, maven, docker) 관련 변경 | build: Update webpack configuration |
ci | CI(Continuous Integration) 설정 파일 변경 | ci: Add deployment stage to GitHub Actions |
revert | 이전 커밋 되돌리기 | revert: Revert feat: Add user profile page |
4. 예시
task/1 : vm_get_frame 함수 구현
[task/1] vm_get_frame 함수 구현
fix/186 : vm_get_frame 버그 수정
[fix/186] vm_get_frame 버그 수정
test : 팀 생성 이후 첫 커밋 테스트(PR 생성 용)
[test] 팀 생성 이후 첫 커밋 테스트(PR 생성 용)
Markdown
복사
본문과 꼬리말은 선택 사항입니다. 헤더만 잘 작성해도 됩니다.
[task/1] vm_get_frame 함수 구현
vm_get_frame 함수는 이런 저런 역할을 합니다...
close #1
Markdown
복사
자신이 수행한 커밋과 연관된 이슈를 병합되자마자 닫고자 한다면, 커밋 메세지 내용에 close #번호 로 작성해주면 됩니다.


